ScreenshotNeo

BlogHow-to

How to Embed Instagram Posts on a Website

Embed a public Instagram post or Reel using Instagram’s code or your CMS. Learn the setup, limitations, troubleshooting, and how to verify the published page.

By the ScreenshotNeo team29 September 20268 min read

How to Embed Instagram Posts on a Website

To embed an Instagram post on a website, use Instagram’s provided embed code in an editor that accepts HTML, or paste a supported Instagram URL into a CMS embed block. Start with a public post or Reel, check that the account allows embeds, then preview the published page. The embed is rendered by Instagram’s JavaScript, so it depends on the external service and the post remaining available; it is not a static image copied into your page.

The precise steps depend on your site editor. Meta’s official WordPress plugin supports public post, Reel, and profile URLs, but does not support Stories. WordPress.com says the account must be public and allow embeds. [Meta Embeds WordPress plugin; WordPress.com Instagram embed guide]

1. Choose a supported Instagram item

For the broadest compatibility, choose a public post or Reel. If you manage the account, confirm that its embed setting permits other sites to display its content. On WordPress, Meta’s plugin also supports profile URLs. Stories are not supported by that plugin, so use a different format if you need to show Story content.

Make sure you have the intended content’s link. You can copy the post or Reel link from Instagram’s app or website. Instagram’s interface and menu labels can change; use the current share or link-copy control rather than relying on a fixed sequence of menu names.

2. Pick the insertion method your website supports

There are two common approaches. Use the first one your site’s editor supports:

Method What you add Best fit
Embed snippet Instagram’s provided HTML snippet A page builder or editor with a custom HTML or code block
CMS URL embed The public Instagram URL A CMS with an Instagram embed integration, such as WordPress configured with Meta’s plugin

Do not assume that every editor accepts raw HTML, automatically converts an Instagram URL, or allows third-party scripts. Some site platforms restrict scripts for security or only support specific providers. Consult the editor’s documentation if the embed block or HTML option is missing.

3. Add the embed to a page

Option A: Use Instagram-provided embed code

  1. Open the public post or Reel and use Instagram’s available control to get its embed code.
  2. In your website editor, add a custom HTML, code, or equivalent embed block where the post should appear.
  3. Paste the complete snippet into that block and save the page.
  4. Preview or publish the page, then check the result in a browser.

Keep the snippet intact unless your editor’s documentation tells you to change it. Instagram’s embed markup includes a script that loads instagram.com/embed.js in the browser and turns the markup into a rendered post. Removing or blocking that script can leave only an unrendered placeholder.

Option B: Paste a supported URL into WordPress

Meta’s official WordPress plugin documents support for public Instagram post URLs, Reel URLs, and profile URLs. With the plugin configured, add the Instagram URL using the WordPress editor’s supported embed workflow. The plugin makes a server-side request to Meta’s oEmbed endpoint to retrieve embed HTML; the returned markup still relies on Instagram’s embed JavaScript in the visitor’s browser. See the plugin documentation and source for setup details.

WordPress.com also documents an Instagram embed block and notes that the account must be public and allow embeds. Its editor may offer a URL-based workflow; follow the instructions for the WordPress.com plan and editor you use. Do not assume WordPress.com and self-hosted WordPress have identical plugin or block settings.

4. Preview and verify the published page

Check the public page, not only the editor canvas. Some editors show a placeholder or preview that differs from the published result. Confirm that the intended post appears, the layout fits the page, and the embed does not obscure nearby content.

An Instagram embed depends on an external script to render the post in the visitor’s browser.
An Instagram embed depends on an external script to render the post in the visitor’s browser.
  • Open the page in a private browser window or another browser where you are not logged in to Instagram.
  • Check a narrow mobile viewport as well as desktop.
  • Allow the external content time to load, and note whether the post requires interaction or login.
  • If your site uses a content security policy, script controls, or a consent manager, check whether it blocks Instagram’s embed script before consent.
  • After editing the post or its privacy settings, reload the public page to confirm the embed still resolves.

The plugin’s frontend rendering is subject to Meta’s Privacy Policy. Consider how a third-party script fits your site’s privacy and performance choices. [Meta plugin readme]

What happens when an Instagram post loads?

An embed is a reference to Instagram content, with markup and script that render the post in the browser. In the documented WordPress plugin flow, WordPress requests embed HTML from Meta’s Graph API oEmbed endpoint; then Instagram’s embed.js script runs on the frontend. This means a visitor’s page load can involve a request to Instagram, and the displayed content depends on both Instagram’s service and the source post being available.

It also means the embed is not equivalent to downloading an image and hosting it yourself. A static copy does not provide the same Instagram post experience, and copying media may raise rights or attribution issues. Use the platform’s embed mechanism when you want the Instagram content itself displayed.

Common problems and fixes

Symptom Likely cause What to try
Nothing appears The account is private, embeds are disabled, or the URL is unsupported. Try a public post or Reel from an account that allows embeds. Confirm you copied the content URL rather than a profile or share redirect that your editor cannot resolve.
Only a link or plain text appears The CMS did not convert the URL, or the snippet was placed in a text block. Use the CMS’s Instagram embed block or its configured integration. For code, use a custom HTML block and preserve the provided snippet.
Markup appears but does not become a post The external embed script did not load or execute. Check browser developer tools for blocked requests or script errors. Review content security policy, script optimization, consent settings, and browser extensions. Ensure instagram.com/embed.js is allowed when appropriate.
The editor preview works but the published page does not The public page has different script, cache, or privacy behavior from the editor. Test the published URL in a private window. Clear the site cache and check published-page script or consent rules.
A Story will not embed through the Meta WordPress plugin Stories are not listed as supported by that plugin. Use a supported public post or Reel, or choose another way to present the material that fits your site and permissions.
The embed breaks later The source post changed, became unavailable, or its account settings changed; the external service may also be unavailable. Check the original Instagram URL and account embed permission, then refresh the page or replace the embed with an available post.
WordPress rejects the URL or code The installation, editor, plugin configuration, or user permissions may not support that insertion route. Check whether you use WordPress.com or self-hosted WordPress, confirm the relevant plugin or block is available, and use an allowed embed block rather than a general text field.

Performance, reliability, and privacy considerations

Because the post renders through an external script, the page may need to wait for Instagram resources to load. The research sources do not provide a reliable benchmark for the extra load time, so measure your own page if speed matters. Test with the embed present and absent under the conditions your visitors experience.

  • Keep the page usable while it loads. Leave enough space for the embed and avoid placing essential instructions only inside the Instagram content.
  • Use embeds selectively. Each external embed can add third-party work to a page. If a page has several posts, check its loading behavior on mobile and slower connections.
  • Plan for source changes. If the account turns private, disables embedding, deletes the post, or the external service cannot respond, your page may no longer show the content.
  • Review privacy behavior. Meta’s plugin notes that frontend rendering is subject to Meta’s Privacy Policy. Align script loading with your site’s consent and privacy practices.

Or skip the browser setup

If your task is to capture a screenshot of a page that contains an Instagram embed, you can use ScreenshotNeo, a website screenshot API and MCP server. One request returns an image or PDF; it does not replace adding the Instagram embed to your site. See the ScreenshotNeo documentation for request options.

A screenshot service can capture a published page after removing common overlays.
A screenshot service can capture a published page after removing common overlays.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
const bytes = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));

Replace the example URL with the published page you want to capture. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, with no card.

Frequently asked questions

Can I embed an Instagram profile instead of one post?

Meta’s official WordPress plugin lists profile URLs as supported, alongside public post and Reel URLs. Confirm that your specific site editor and configuration support the profile embed.

Can I make the embed work without Instagram’s script?

The documented embed flow uses Instagram’s JavaScript to render the content. If a site blocks that script, the embed may not render as intended.

Will an embed remain available if the original account changes its settings?

Not necessarily. The page depends on Instagram content that remains available and permitted for embedding. Recheck the original item if a previously working embed stops displaying.

Does every website platform accept the Instagram URL directly?

No. URL handling depends on the editor and its integrations. Use the platform’s documented embed block or a permitted HTML snippet.

Sources