⚡ رایگان و سریع

لینک کوتاه، ذخیره متن، صفحه لندینگ

هر چیزی که نیاز دارید را در چند ثانیه بسازید. بدون ثبت‌نام، بدون پیچیدگی.

ورود ثبت‌نام
نام لینک
یک نام دلخواه برای لینک انتخاب کنید یا خالی بگذارید.
نام فقط حروف، اعداد و خط تیره باشد. اگر خالی باشد، خودکار ساخته می‌شود.
برای لینک خصوصی، وارد شوید.
آدرس مقصد
لینکی که می‌خواهید کوتاه شود را وارد کنید.
متن را اینجا بگذارید
هر متنی که می‌خواهید ذخیره شود. بعد از ساخت، لینک ویرایش هم دریافت می‌کنید.
آپلود تصویر
تصویر را بکشید و رها کنید، کلیک کنید یا paste کنید. لینک کوتاه ساخته می‌شود.
📁
تصویر را اینجا بکشید یا کلیک کنید
همچنین می‌توانید با Ctrl+V پیست کنید
ساخت صفحه لندینگ
یک صفحه HTML بسازید یا از قالب آماده شروع کنید.
توضیح بدهید چه صفحه‌ای می‌خواهید؛ هوش مصنوعی برایتان می‌سازد.
📄
کشید و رها کنید یا کلیک کنید برای آپلود فایل HTML
فقط فایل‌های HTML (.html, .htm) — حداکثر ۲۰ مگابایت

ابزارهای مفید

ابزار زیر را انتخاب کنید.

📐
تبدیل واحد
طول، وزن، دما
💰
قیمت لحظه‌ای
دلار، یورو، طلا، سکه
📱
QR Code
ساخت کد برای هر لینک
🎬
پخش ویدیو
یوتیوب و لینک مستقیم
🧩 افزونه مرورگر
لینک کوتاه کردن سریع‌تر از تب فعلی مرورگر.
دانلود افزونه
مراحل نصب:
  1. فایل ZIP را دانلود و باز کنید.
  2. Chrome: chrome://extensions → Developer mode → Load unpacked
  3. Firefox: about:debugging → Load Temporary Add-on
⌨️ ابزار خط فرمان
ذخیره و دریافت متن از ترمینال.
نصب:
# نصب curl -fsSL http://adlr.ir/adlr.sh | sudo tee /usr/local/bin/adlr >/dev/null sudo chmod +x /usr/local/bin/adlr
مثال استفاده:
# ذخیره متن echo "Hello" | adlr save # دریافت محتوا adlr get abc1234
`; } function handleFileSelect(event) { const file = event.target.files[0]; if (!file) return; const maxSize = 20 * 1024 * 1024; if (file.size > maxSize) { alert('حداکثر حجم فایل ۲۰ مگابایت است.'); event.target.value = ''; return; } const allowedTypes = ['text/html', 'application/xhtml+xml']; const allowedExtensions = ['.html', '.htm']; const ext = file.name.toLowerCase().slice(file.name.lastIndexOf('.')); if (!allowedTypes.includes(file.type) && !allowedExtensions.includes(ext)) { alert('فقط فایل‌های HTML مجاز هستند.'); event.target.value = ''; return; } const reader = new FileReader(); reader.onload = function(e) { const content = e.target.result; if (content.trim().length === 0) { alert('فایل خالی است.'); return; } document.getElementById('landing_html').value = content; document.getElementById('file_info').textContent = 'فایل ' + file.name + ' (' + (file.size / 1024).toFixed(1) + ' KB) بارگذاری شد'; document.getElementById('file_info').style.display = 'block'; document.getElementById('file_drop_hint').style.display = 'none'; }; reader.onerror = function() { alert('خطا در خواندن فایل.'); }; reader.readAsText(file); } function previewLanding() { const raw = document.getElementById('landing_html').value || ''; const title = document.getElementById('landing_title').value || ''; const desc = document.getElementById('landing_desc').value || ''; const html = buildLandingHtml(raw, title, desc, true); document.getElementById('landing_preview_wrap').style.display = ''; document.getElementById('landing_preview_iframe').srcdoc = html; } function aiGenerateLanding() { const desc = document.getElementById('ai_description').value.trim(); if (desc.length < 5) { document.getElementById('ai_status').textContent = 'توضیح کوتاه است.'; return; } const btn = document.getElementById('ai_generate_btn'); const text = btn.querySelector('.btn-text'); const status = document.getElementById('ai_status'); const ta = document.getElementById('landing_html'); btn.disabled = true; const originalLabel = text.textContent; text.textContent = 'در حال ساخت... ⏳'; status.textContent = 'در حال تولید صفحه...'; status.style.color = 'var(--muted)'; ta.value = ''; let buffer = ''; let done = false; fetch('/api/landing/ai-generate/stream', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'text/event-stream', }, body: JSON.stringify({ description: desc }) }) .then(r => { if (!r.ok) { return r.json().then(d => { throw new Error(d.message || 'خطا'); }); } return r.body.getReader(); }) .then(reader => { const decoder = new TextDecoder(); let partial = ''; function pump() { reader.read().then(({ done: readerDone, value }) => { if (readerDone) { finish(); return; } partial += decoder.decode(value, { stream: true }); const lines = partial.split('\n'); partial = lines.pop() || ''; for (const line of lines) { if (!line.startsWith('data: ')) continue; const raw = line.slice(6).trim(); if (raw === '[DONE]' || raw === '') continue; try { const chunk = JSON.parse(raw); if (chunk.error) { throw new Error(chunk.message || 'خطا'); } const delta = chunk.choices?.[0]?.delta?.content; if (delta) { buffer += delta; ta.value = buffer; status.textContent = buffer.length + ' کاراکتر...'; } } catch (_) {} } pump(); }); } pump(); }) .catch(err => { status.textContent = err.message || 'خطای شبکه. دوباره تلاش کنید.'; status.style.color = 'var(--bad)'; btn.disabled = false; text.textContent = originalLabel; }); function finish() { if (buffer.trim().length > 0) { ta.value = buffer; if (!document.getElementById('landing_title').value) { document.getElementById('landing_title').value = desc.slice(0, 60); } status.textContent = 'ساخته شد. می‌توانید ویرایش کنید.'; status.style.color = 'var(--good)'; previewLanding(); } else { status.textContent = 'پاسخی دریافت نشد.'; status.style.color = 'var(--bad)'; } btn.disabled = false; text.textContent = originalLabel; } } function pbBlock(kind) { const ta = document.getElementById('landing_html'); if (!ta) return; const blocks = { hero: '\n

تیتر اصلی

زیرتیتر کوتاه

\n', cta: '\n

کلیک کنید

\n', cols: '\n
ستون اول
ستون دوم
\n', img: '\n

\n' }; insertAtCursor(ta, blocks[kind] || ''); } function pbApplyTemplate() { const ta = document.getElementById('landing_html'); if (!ta) return; if (ta.value.trim() && !confirm('محتوای فعلی جایگزین شود؟')) return; ta.value = '
\n

عنوان صفحه

\n

توضیح کوتاه.

\n\n
'; } // Units const unitMaps = { length:{units:["m","km","cm","mm"],toBase:(v,u)=>u==="m"?v:u==="km"?v*1000:u==="cm"?v/100:v/1000,fromBase:(v,u)=>u==="m"?v:u==="km"?v/1000:u==="cm"?v*100:v*1000}, weight:{units:["kg","g","lb"],toBase:(v,u)=>u==="kg"?v:u==="g"?v/1000:v*0.45359237,fromBase:(v,u)=>u==="kg"?v:u==="g"?v*1000:v/0.45359237}, temp:{units:["C","F","K"],toBase:(v,u)=>u==="C"?v:u==="F"?((v-32)*5/9):(v-273.15),fromBase:(v,u)=>u==="C"?v:u==="F"?((v*9/5)+32):(v+273.15)} }; function renderUnitForm() { const type=document.getElementById('unit_type').value; const from=document.getElementById('unit_from'); const to=document.getElementById('unit_to'); from.innerHTML='';to.innerHTML=''; unitMaps[type].units.forEach(u=>{from.innerHTML+=``;to.innerHTML+=``}); if(type==="length"){from.value="m";to.value="km"} if(type==="weight"){from.value="kg";to.value="lb"} if(type==="temp"){from.value="C";to.value="F"} convertUnits(); } function convertUnits() { const type=document.getElementById('unit_type').value; const vStr=document.getElementById('unit_value').value; const out=document.getElementById('unit_out'); if(vStr===''){out.textContent='—';return} const v=Number(vStr); const base=unitMaps[type].toBase(v,document.getElementById('unit_from').value); const res=unitMaps[type].fromBase(base,document.getElementById('unit_to').value); const nice=n=>(Math.abs(n)>=1e6||Math.abs(n)<1e-4)?n.toExponential(6):Number(n.toFixed(6)).toString(); out.textContent=`${nice(v)} ${document.getElementById('unit_from').value} = ${nice(res)} ${document.getElementById('unit_to').value}`; } // Rates const RATES_URL = ""; function formatFa(n){return Number(n).toLocaleString('fa-IR')} function normalizeRatesPayload(obj){ if(!obj||typeof obj!=='object')return obj; const m={...obj};if(obj.data&&typeof obj.data==='object')Object.assign(m,obj.data);if(obj.rates&&typeof obj.rates==='object')Object.assign(m,obj.rates);return m; } async function loadRates(){ const grid=document.getElementById('rates_grid'); if(!RATES_URL){grid.innerHTML='
RATES_URL تنظیم نشده
';return} grid.innerHTML='
دریافت...
'; try{ const res=await fetch(RATES_URL,{cache:'no-store'}); const data=normalizeRatesPayload(await res.json()); const items=[["usd","دلار"],["eur","یورو"],["usdt","تتر"],["btc","بیت‌کوین"],["gold_18","طلای ۱۸"],["coin_emami","سکه امامی"]]; grid.innerHTML=''; items.forEach(([k,label])=>{ if(data[k]===undefined)return; grid.innerHTML+=`
${label}
${formatFa(data[k])}
`; }); }catch(e){grid.innerHTML='
خطا در دریافت
'} } // QR let lastQrSvg=''; async function generateQr(){ const input=document.getElementById('qr_input'); const out=document.getElementById('qr_output'); const url=(input.value||'').trim(); if(!url){out.innerHTML='
آدرسی وارد کنید
';return} out.innerHTML='
در حال ساخت...
'; try{ const res=await fetch('/api/qr?url='+encodeURIComponent(url)+'&size=300'); if(!res.ok)throw new Error('HTTP '+res.status); lastQrSvg=await res.text(); out.innerHTML=lastQrSvg; }catch(e){out.innerHTML='
خطا
'} } function downloadQr(){ if(!lastQrSvg){return} const blob=new Blob([lastQrSvg],{type:'image/svg+xml'}); const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='qrcode.svg'; document.body.appendChild(a);a.click();a.remove(); } async function showCreatedQr(url){ const el=document.getElementById('created_qr'); if(!el)return;el.style.display='';el.innerHTML='
در حال ساخت QR...
'; try{const res=await fetch('/api/qr?url='+encodeURIComponent(url)+'&size=200');if(!res.ok)throw new Error();el.innerHTML=await res.text()} catch(e){el.innerHTML='
خطا
'} } // Videos let videoIndex=0; function extractYouTubeId(url){ try{const u=new URL(url);if(u.hostname.includes('youtu.be'))return u.pathname.replace('/','').trim()||null;if(u.hostname.includes('youtube.com')){if(u.searchParams.get('v'))return u.searchParams.get('v');const m=u.pathname.match(/\/shorts\/([^\/\?]+)/);if(m)return m[1]}return null}catch(e){return null} } function parseVideoIds(){return document.getElementById('video_list').value.split('\n').map(x=>x.trim()).filter(Boolean).map(extractYouTubeId).filter(Boolean)} function buildPlayUrl(id){ const mode=document.getElementById('video_mode').value; if(mode==='yt')return`https://www.youtube-nocookie.com/embed/${encodeURIComponent(id)}?rel=0&modestbranding=1`; return`https://www.youtube.com/watch?v=${encodeURIComponent(id)}`; } function playFirst(){playByIndex(0)} function playNext(){playByIndex(videoIndex+1)} function playByIndex(i){ const ids=parseVideoIds(); if(!ids.length){return} videoIndex=(i+ids.length)%ids.length; document.getElementById('player_iframe').src=buildPlayUrl(ids[videoIndex]); } // Image upload let imageDataUrl = ''; const MAX_IMAGE_SIZE = 5 * 1024 * 1024; function handleImageFile(file) { if (!file || !file.type.startsWith('image/')) return; if (file.size > MAX_IMAGE_SIZE) { alert('حداکثر حجم تصویر ۵ مگابایت است.'); return; } const reader = new FileReader(); reader.onload = function(e) { imageDataUrl = e.target.result; document.getElementById('image_preview').src = imageDataUrl; document.getElementById('image_preview_wrap').style.display = ''; document.getElementById('image_drop_hint').style.display = 'none'; document.getElementById('image_file_name').textContent = file.name; document.getElementById('image_file_size').textContent = (file.size / 1024).toFixed(1) + ' KB'; document.getElementById('image_submit_btn').disabled = false; document.getElementById('image_clear_btn').style.display = ''; document.getElementById('image_drop_zone').style.borderColor = 'rgba(124,58,237,.5)'; }; reader.readAsDataURL(file); } function clearImagePreview() { imageDataUrl = ''; document.getElementById('image_preview_wrap').style.display = 'none'; document.getElementById('image_drop_hint').style.display = ''; document.getElementById('image_file_input').value = ''; document.getElementById('image_submit_btn').disabled = true; document.getElementById('image_clear_btn').style.display = 'none'; document.getElementById('image_drop_zone').style.borderColor = ''; } (function() { const zone = document.getElementById('image_drop_zone'); if (!zone) return; zone.addEventListener('dragover', function(e) { e.preventDefault(); zone.style.borderColor = 'rgba(124,58,237,.8)'; zone.style.background = 'rgba(124,58,237,.08)'; }); zone.addEventListener('dragleave', function(e) { e.preventDefault(); if (!imageDataUrl) zone.style.borderColor = ''; zone.style.background = ''; }); zone.addEventListener('drop', function(e) { e.preventDefault(); zone.style.background = ''; if (e.dataTransfer.files.length) handleImageFile(e.dataTransfer.files[0]); }); document.addEventListener('paste', function(e) { if (document.activeElement && (document.activeElement.tagName === 'TEXTAREA' || document.activeElement.tagName === 'INPUT')) return; const items = e.clipboardData && e.clipboardData.items; if (!items) return; for (let i = 0; i < items.length; i++) { if (items[i].type.startsWith('image/')) { const file = items[i].getAsFile(); if (file) { handleImageFile(file); e.preventDefault(); break; } } } }); })(); // Landing builder image upload (replaces empty img block) function pbBlockWithImage() { const ta = document.getElementById('landing_html'); if (!ta) return; const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.onchange = function() { const file = this.files[0]; if (!file || !file.type.startsWith('image/')) return; if (file.size > MAX_IMAGE_SIZE) { alert('حداکثر حجم تصویر ۵ مگابایت است.'); return; } const reader = new FileReader(); reader.onload = function(e) { const tag = '\n

' + (file.name || '') + '

\n'; insertAtCursor(ta, tag); }; reader.readAsDataURL(file); }; input.click(); } // Prefill (function(){ try{const q=new URL(location.href).searchParams.get('prefill_url')||"";if(!q)return;document.getElementById('long_url').value=q;document.querySelector('[data-tab="short"]').click()}catch(e){} })(); // Init sticky state (function(){ const active = document.getElementById('ui_tab').value; document.querySelector('.tabs').classList.toggle('sticky-off', active === 'landing'); })();