Over 10 years we helping companies reach their financial and branding goals. Onum is a values-driven SEO agency dedicated.

CONTACTS
<style>
.igdl-wrap{max-width:700px;margin:40px auto;font-family:system-ui,sans-serif;text-align:center}
.igdl-tabs{display:flex;justify-content:center;gap:8px;margin-bottom:24px;flex-wrap:wrap}
.igdl-tab{padding:8px 18px;border-radius:20px;border:1px solid #ddd;background:#fff;cursor:pointer;font-size:14px}
.igdl-tab.active{background:#6c2bd9;color:#fff;border-color:#6c2bd9}
.igdl-title{font-size:34px;font-weight:800;background:linear-gradient(90deg,#a855f7,#ec4899);-webkit-background-clip:text;color:transparent;margin-bottom:6px}
.igdl-form{display:flex;gap:10px;background:#fff;padding:10px;border-radius:14px;box-shadow:0 6px 20px rgba(0,0,0,.08);align-items:center}
.igdl-input{flex:1;border:none;outline:none;padding:12px;font-size:15px;min-width:0}
.igdl-btn{background:#3b82f6;color:#fff;border:none;padding:12px 28px;border-radius:10px;cursor:pointer;font-weight:600;white-space:nowrap}
.igdl-btn:disabled{opacity:.6;cursor:not-allowed}
.igdl-clear-btn,.igdl-paste-btn{background:#f1f1f4;color:#333;border:none;padding:12px 16px;border-radius:10px;cursor:pointer;font-weight:600;white-space:nowrap;display:none;align-items:center;gap:6px}
.igdl-clear-btn:hover,.igdl-paste-btn:hover{background:#e4e4ea}
.igdl-hp{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;opacity:0}
.igdl-spinner-wrap{display:none;align-items:center;justify-content:center;gap:10px;margin-top:20px;color:#555}
.igdl-spinner{width:22px;height:22px;border:3px solid #e2d9f7;border-top-color:#6c2bd9;border-radius:50%;animation:igdl-spin .8s linear infinite}
@keyframes igdl-spin{to{transform:rotate(360deg)}}
.igdl-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:30px;text-align:left}
.igdl-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.08)}
.igdl-card img,.igdl-card video{width:100%;height:220px;object-fit:cover;display:block;background:#000}
.igdl-dl{display:block;text-align:center;background:#3b82f6;color:#fff;padding:10px;text-decoration:none;font-weight:600}
.igdl-msg{margin-top:16px;color:#666}
.igdl-msg.igdl-error{color:#d33}
.igdl-turnstile-wrap{display:flex;justify-content:center;margin-top:18px}

.igdl-content{max-width:1000px;margin:60px auto 20px;padding:0 20px;font-family:system-ui,sans-serif;color:#1f2430}
.igdl-content h2{color:#2f5bff;font-size:28px;font-weight:800;text-align:center;margin-bottom:8px}
.igdl-content .igdl-underline{width:70px;height:4px;background:#e0257e;margin:0 auto 26px;border-radius:2px}
.igdl-content p{line-height:1.7;color:#333}
.igdl-content .igdl-lead{text-align:center;max-width:750px;margin:0 auto 30px;color:#555}
.igdl-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin-bottom:60px}
.igdl-step-card{background:linear-gradient(135deg,#a855f7,#ec4899);border-radius:16px;padding:0;overflow:hidden;color:#fff;text-align:center}
.igdl-step-visual{padding:50px 20px;font-size:40px}
.igdl-step-body{background:#fff;color:#1f2430;padding:20px}
.igdl-step-body h3{color:#e0257e;margin:0 0 12px}
.igdl-step-body p{color:#444;font-size:15px;margin:0}
.igdl-feature-grid,.igdl-device-grid,.igdl-what-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-bottom:60px}
.igdl-feature-card{background:#fff;border:1px solid #eee;border-radius:14px;padding:24px;box-shadow:0 4px 14px rgba(0,0,0,.05)}
.igdl-feature-card h3{color:#2f5bff;margin:0 0 10px;font-size:19px}
.igdl-feature-card p{margin:0;font-size:15px;color:#444}
.igdl-legal-box{background:#fff8f8;border:1px solid #ffd8d8;border-radius:14px;padding:24px;margin-bottom:60px;font-size:15px;line-height:1.7}
.igdl-faq-item{margin-bottom:22px}
.igdl-faq-item h3{color:#2f5bff;font-size:17px;margin:0 0 6px}
.igdl-faq-item p{margin:0;color:#444;font-size:15px}
.igdl-disclaimer{font-size:13px;color:#888;text-align:center;margin:40px auto 0;max-width:700px;line-height:1.6}
</style>

<div class="igdl-wrap">
  <div class="igdl-title">Instagram Video Downloader</div>
  <p>Videos, Photos, Reels &amp; Stories download karein</p>

  <div class="igdl-tabs">
    <div class="igdl-tab active" data-type="post">Post</div>
    <div class="igdl-tab" data-type="reel">Reel</div>
    <div class="igdl-tab" data-type="igtv">IGTV</div>
    <div class="igdl-tab" data-type="carousel">Carousel</div>
    <div class="igdl-tab" data-type="story">Story</div>
  </div>

  <div class="igdl-form">
    <input class="igdl-input" id="igdl-url" placeholder="Instagram link (ya Story ke liye username) paste karein" autocomplete="off">
    <input class="igdl-hp" id="igdl-hp" type="text" tabindex="-1" autocomplete="off">
    <button class="igdl-clear-btn" id="igdl-clear" type="button">✕ Clear</button>
    <button class="igdl-paste-btn" id="igdl-paste" type="button">📋 Paste</button>
    <button class="igdl-btn" id="igdl-btn" type="button">Download</button>
  </div>

  <div class="igdl-turnstile-wrap">
    <div class="cf-turnstile" id="igdl-turnstile" data-sitekey="0x4AAAAAADj81-lOzy9yI5hm" data-callback="igdlTurnstileCallback" data-expired-callback="igdlTurnstileExpired" data-theme="light"></div>
  </div>

  <div class="igdl-spinner-wrap" id="igdl-spinner-wrap">
    <div class="igdl-spinner"></div>
    <span>Media fetch ho raha hai...</span>
  </div>

  <div class="igdl-msg" id="igdl-msg"></div>
  <div class="igdl-results" id="igdl-results"></div>
</div>

<div class="igdl-content">

  <h2>How to download Instagram content?</h2>
  <div class="igdl-underline"></div>
  <p class="igdl-lead">Follow these three simple steps to save any public Instagram post, reel, IGTV, carousel or story.</p>
  <div class="igdl-steps">
    <div class="igdl-step-card">
      <div class="igdl-step-visual">🔗</div>
      <div class="igdl-step-body">
        <h3>Copy the link</h3>
        <p>Open Instagram, find the post or reel you want, tap the three dots and choose "Copy Link".</p>
      </div>
    </div>
    <div class="igdl-step-card">
      <div class="igdl-step-visual">📋</div>
      <div class="igdl-step-body">
        <h3>Paste it here</h3>
        <p>Come back to this page, choose the right tab above (Post, Reel, IGTV, Carousel or Story) and paste the link.</p>
      </div>
    </div>
    <div class="igdl-step-card">
      <div class="igdl-step-visual">⬇️</div>
      <div class="igdl-step-body">
        <h3>Hit Download</h3>
        <p>Click Download and save the video or photo straight to your phone or computer, in the original quality.</p>
      </div>
    </div>
  </div>

  <h2>Why use this Instagram Downloader</h2>
  <div class="igdl-underline"></div>
  <div class="igdl-feature-grid">
    <div class="igdl-feature-card">
      <h3>Original quality, no watermark</h3>
      <p>Every video or photo saves at the quality it was posted in. Nothing is stamped on top of the file.</p>
    </div>
    <div class="igdl-feature-card">
      <h3>No login required</h3>
      <p>You never need to sign in with your Instagram account. Just paste a public link and download.</p>
    </div>
    <div class="igdl-feature-card">
      <h3>Works on any device</h3>
      <p>This page adjusts itself for phones, tablets and desktops, so it works the same everywhere.</p>
    </div>
    <div class="igdl-feature-card">
      <h3>Supports every format</h3>
      <p>Posts, Reels, IGTV, Carousel albums and Stories are all supported from the same page.</p>
    </div>
  </div>

  <h2>What you can download</h2>
  <div class="igdl-underline"></div>
  <div class="igdl-what-grid">
    <div class="igdl-feature-card">
      <h3>Video (MP4, HD)</h3>
      <p>The full clip in the best quality available, ready to play offline or share elsewhere.</p>
    </div>
    <div class="igdl-feature-card">
      <h3>Photos</h3>
      <p>Single images or full carousel albums, saved individually in their original resolution.</p>
    </div>
    <div class="igdl-feature-card">
      <h3>Story highlights</h3>
      <p>Save a public account's active stories before they disappear after 24 hours.</p>
    </div>
  </div>

  <h2>Is it legal and safe to download Instagram content?</h2>
  <div class="igdl-underline"></div>
  <div class="igdl-legal-box">
    <p>Saving a public post for personal, offline viewing is generally considered fine. What matters is respecting the original creator: don't re-upload someone else's content as your own, and don't use it commercially without permission — copyright always stays with whoever made it.</p>
    <p style="margin-top:12px">This tool only works with public content, never asks for your Instagram username or password, and does not store the media you download or keep a history of the links you paste.</p>
  </div>

  <h2>Frequently Asked Questions</h2>
  <div class="igdl-underline"></div>

  <div class="igdl-faq-item">
    <h3>Is this Instagram downloader free?</h3>
    <p>Yes, it's completely free to use with no registration needed.</p>
  </div>
  <div class="igdl-faq-item">
    <h3>Do I need to install an app or browser extension?</h3>
    <p>No. Everything runs directly in your browser on this page.</p>
  </div>
  <div class="igdl-faq-item">
    <h3>Will the downloaded video have a watermark?</h3>
    <p>No, media is saved in its original form without any added watermark or logo.</p>
  </div>
  <div class="igdl-faq-item">
    <h3>Can I download private Instagram accounts' content?</h3>
    <p>No — only content from public accounts and public posts can be fetched.</p>
  </div>
  <div class="igdl-faq-item">
    <h3>Does this tool store my downloads?</h3>
    <p>No, nothing you download is stored on our server or logged against your identity.</p>
  </div>
  <div class="igdl-faq-item">
    <h3>Why did I get a "too many requests" message?</h3>
    <p>To keep the service reliable for everyone, there's a short limit on how many downloads can be requested per minute from the same connection. Waiting a minute and trying again resolves this.</p>
  </div>

  <p class="igdl-disclaimer">This tool is intended for personal use with publicly available Instagram content only. Please respect content creators' rights and Instagram's own Terms of Service.</p>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Instagram Video, Photo, Reels & Story Downloader",
  "applicationCategory": "MultimediaApplication",
  "operatingSystem": "Any",
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
  "description": "Free online tool to download public Instagram videos, photos, reels, IGTV, carousel posts and stories in original quality without a watermark."
}
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is this Instagram downloader free?",
      "acceptedAnswer": { "@type": "Answer", "text": "Yes, it's completely free to use with no registration needed." }
    },
    {
      "@type": "Question",
      "name": "Do I need to install an app or browser extension?",
      "acceptedAnswer": { "@type": "Answer", "text": "No. Everything runs directly in your browser on this page." }
    },
    {
      "@type": "Question",
      "name": "Will the downloaded video have a watermark?",
      "acceptedAnswer": { "@type": "Answer", "text": "No, media is saved in its original form without any added watermark or logo." }
    },
    {
      "@type": "Question",
      "name": "Can I download private Instagram accounts' content?",
      "acceptedAnswer": { "@type": "Answer", "text": "No, only content from public accounts and public posts can be fetched." }
    }
  ]
}
</script>

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async="" defer=""></script>

<script>
(function () {
  const BACKEND_URL = "https://dmltraining.com/ig-fetch.php";
  const PROXY_URL   = "https://dmltraining.com/ig-proxy.php";

  let activeType = 'post';
  let lastRequestAt = 0;
  let turnstileToken = '';
  const COOLDOWN_MS = 3000;

  window.igdlTurnstileCallback = function (token) {
    turnstileToken = token;
  };
  window.igdlTurnstileExpired = function () {
    turnstileToken = '';
  };

  const input        = document.getElementById('igdl-url');
  const hpField      = document.getElementById('igdl-hp');
  const clearBtn      = document.getElementById('igdl-clear');
  const pasteBtn      = document.getElementById('igdl-paste');
  const downloadBtn   = document.getElementById('igdl-btn');
  const msg           = document.getElementById('igdl-msg');
  const results       = document.getElementById('igdl-results');
  const spinnerWrap    = document.getElementById('igdl-spinner-wrap');

  document.querySelectorAll('.igdl-tab').forEach(tab => {
    tab.addEventListener('click', () => {
      document.querySelectorAll('.igdl-tab').forEach(t => t.classList.remove('active'));
      tab.classList.add('active');
      activeType = tab.dataset.type;
    });
  });

  function updateClearPasteButtons() {
    if (input.value.trim()) {
      clearBtn.style.display = 'inline-flex';
      pasteBtn.style.display = 'none';
    } else {
      clearBtn.style.display = 'none';
      pasteBtn.style.display = 'inline-flex';
    }
  }
  input.addEventListener('input', updateClearPasteButtons);
  updateClearPasteButtons();

  clearBtn.addEventListener('click', () => {
    input.value = '';
    results.innerHTML = '';
    msg.textContent = '';
    msg.classList.remove('igdl-error');
    updateClearPasteButtons();
    input.focus();
  });

  pasteBtn.addEventListener('click', async () => {
    try {
      const text = await navigator.clipboard.readText();
      input.value = text;
      updateClearPasteButtons();
    } catch (e) {
      msg.textContent = 'Clipboard access allow karein ya link manually paste karein.';
      msg.classList.add('igdl-error');
    }
  });

  function showSpinner(show) {
    spinnerWrap.style.display = show ? 'flex' : 'none';
  }

  downloadBtn.addEventListener('click', async () => {
    const url = input.value.trim();
    results.innerHTML = '';
    msg.classList.remove('igdl-error');

    if (hpField.value) {
      msg.textContent = 'Kuch galat lag raha hai, page reload karke dobara try karein.';
      msg.classList.add('igdl-error');
      return;
    }

    if (!url) {
      msg.textContent = 'Pehle link ya username daalein';
      msg.classList.add('igdl-error');
      return;
    }

    const now = Date.now();
    if (now - lastRequestAt < COOLDOWN_MS) {
      msg.textContent = 'Thoda ruk kar dubara try karein.';
      msg.classList.add('igdl-error');
      return;
    }

    if (!turnstileToken) {
      msg.textContent = 'Kripya "I am not a robot" verification complete karein.';
      msg.classList.add('igdl-error');
      return;
    }

    lastRequestAt = now;

    msg.textContent = '';
    showSpinner(true);
    downloadBtn.disabled = true;

    try {
      const res = await fetch(BACKEND_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ url, type: activeType, hp: hpField.value, turnstileToken })
      });

      if (res.status === 429) {
        const errData = await res.json().catch(() => ({}));
        msg.textContent = errData.message || 'Bahut zyada requests. Thodi der baad try karein.';
        msg.classList.add('igdl-error');
        return;
      }

      const data = await res.json();
      console.log(data);

      if (data && data.error) {
        msg.textContent = 'Error: ' + data.error;
        msg.classList.add('igdl-error');
        return;
      }

      const items = Array.isArray(data) ? data : (data.media || data.items || []);
      if (!items.length) {
        msg.textContent = 'Koi media nahi mila. Link check karke dubara try karein.';
        msg.classList.add('igdl-error');
        return;
      }

      items.forEach(item => {
        const mediaUrl = item.urls && item.urls[0] ? item.urls[0].url : null;
        if (!mediaUrl) return;

        const ext = (item.urls[0].extension || '').toLowerCase();
        const isVideo = ext === 'mp4';
        const thumb = item.pictureUrl || mediaUrl;

        const card = document.createElement('div');
        card.className = 'igdl-card';
        card.innerHTML = `
          ${isVideo
            ? `<video src="${mediaUrl}" muted controls poster="${thumb}"></video>`
            : `<img src="${thumb}" />`}
          <a class="igdl-dl" href="${PROXY_URL}?url=${encodeURIComponent(mediaUrl)}&type=${isVideo ? 'video' : 'image'}">Download</a>
        `;
        results.appendChild(card);
      });
    } catch (e) {
      msg.textContent = 'Network error: dubara try karein.';
      msg.classList.add('igdl-error');
    } finally {
      showSpinner(false);
      downloadBtn.disabled = false;
      if (window.turnstile) { window.turnstile.reset('#igdl-turnstile'); }
      turnstileToken = '';
    }
  });
})();
</script>