Some are essential for FeedFusion to work. Others help us see how the product gets used. Pick what you're okay with.
Yes, you can embed an Instagram feed without a plugin. The two realistic options are Instagram's native post embed (single post, not a feed grid) and a hosted widget service. Which approach fits depends on your platform, how much control you need, and whether your site editor will ever touch HTML.
Yes, you can embed an Instagram feed without a plugin. The two realistic options are Instagram's native post embed (single post, not a feed grid) and a hosted widget service that handles the Instagram API on your behalf. Which one fits depends on your platform, how much control you need, and whether your site editor will ever need to touch HTML.
This guide covers both paths, platform by platform.
The phrase means different things depending on your context.
If you're on WordPress, "without a plugin" means avoiding the WordPress Plugin Directory entirely. No Smash Balloon, no Elfsight WP plugin, nothing that touches the Plugins menu. You'd instead use a JavaScript snippet or an iframe, typically from a hosted widget service.
If you're on a hosted site builder (Wix, Squarespace, Shopify, Webflow), there are no WordPress-style plugins by definition. "Without a plugin" here usually means without paying for a third-party app or integration. Sometimes it means without code at all.
And if you're a developer building a custom site, "without a plugin" means you want to call the Instagram API directly or use a service that returns clean JSON, not a tool that injects its own dashboard and opinionated UI into your stack.
The "without plugin" question is three different questions. Which one you're asking shapes the answer.
There are genuine reasons to avoid WordPress-style plugin installs or third-party app marketplaces:
You're on a headless or custom-built site. Next.js, Astro, Nuxt, SvelteKit: none of these use the WordPress plugin ecosystem. You need either a hosted widget (a JavaScript snippet or iframe) or a JSON API endpoint you can fetch directly. The plugin category doesn't apply.
You maintain sites for multiple clients. Every plugin is a dependency. Every dependency is a potential breaking update. If you manage 10 client sites, 10 separate plugin installs are 10 more things to keep patched, renewed, and monitored. A hosted widget with a single account across all clients is meaningfully simpler to maintain.
You want to keep the stack minimal. WordPress installs accumulate plugins over time. Each one adds weight, potential conflicts, and attack surface. A JavaScript snippet from a hosted widget service is one <script> tag, not a PHP package with a settings page, a license renewal, and a database table.
You're wary of token management. Instagram's API uses short-lived access tokens that expire every 60 days. Long-lived tokens can be refreshed, but only if your tooling keeps doing it. Meta deprecated the older Basic Display API on December 4, 2024, and the current Instagram API with Instagram Login (documented in the Facebook Developer docs) carries the same 60-day expiry. Many plugins handle the refresh with a background process, which sounds convenient until the plugin license lapses or the auto-refresh quietly fails. With a hosted widget service, token rotation runs server-side, not in your install.
There are also cases where a plugin is the right choice.
Your site is on WordPress and the editor needs full control in the WP admin. The major WordPress Instagram feed plugins give clients a settings panel inside their CMS. If your client expects to configure feed columns, card styles, and post counts without touching HTML, a plugin is the right interface.
You need advanced layout customization within WordPress. Hosted widget services give you a snippet. WordPress plugins typically give you block settings, Gutenberg blocks, and shortcodes that map to what a non-technical editor expects. If the brief calls for heavy layout control inside the WordPress editor, a plugin earns its place.
You've already evaluated the plugin and trust the vendor. Most WordPress Instagram feed plugins offer a free tier with limited features and a paid tier for refresh control, multiple feeds, and layout options. If you've already chosen a vendor, the setup is faster than configuring a separate hosted service. No reason to change what works.
The no-plugin path. You have two options. Instagram's native embed gives you a single post embed via the oEmbed API: copy a post URL, paste it as a plain link in the Gutenberg editor, and WordPress renders an embedded post card. This is fine for one post but does not produce a feed grid. For a grid, you'd use a hosted widget service: create an account, connect your Instagram, copy the JavaScript snippet, and paste it into a Custom HTML block in the editor. The downside is that your editor now needs to touch a Custom HTML block whenever they want to update embed settings, which is not intuitive for non-technical clients.
The plugin path. Smash Balloon's Instagram Feed plugin is the most widely installed option in the category, with over one million active installations on the WordPress.org plugin directory. The free tier shows a basic grid; the paid plan adds card layouts, Instagram Stories support, and shoppable feed options. Pricing changes regularly, so check their site for current tiers. If the client needs a clean settings panel inside WP admin and doesn't want to touch HTML, the plugin is the easier handoff.
What we'd actually recommend. For developer-built WordPress sites where the client is not editing feed settings regularly: a hosted widget. For non-technical clients who expect a "click and configure" experience inside their WordPress dashboard: use a plugin with a settings interface.
The no-plugin path. Wix has no WordPress-style plugin directory. Third-party integrations use the Wix App Market. "Without an app" means using Wix's HTML embed block (an <iframe> or <script> embed from a hosted widget service). Go to the Wix Editor, add an "HTML iFrame" or "Custom Embed" element, and paste the embed snippet from your chosen hosted widget. You can size the element, but Wix's handling of custom HTML embeds has quirks with responsive width, so test on mobile.
The app market path. Wix has its own app marketplace with several Instagram feed apps. These handle the OAuth connection inside the Wix interface, which is a smoother setup experience for a non-technical client.
What we'd actually recommend. If you're building the site and comfortable with the HTML embed element: a hosted widget service. If you're handing the site to a client who will be managing it themselves: a Wix App Market integration is easier for them to work with long-term.
The no-plugin path. Squarespace has a native Instagram block (under Content Blocks) that connects via OAuth and shows a simple grid. It is genuinely easy to set up and doesn't require any third-party service. The limitations: it shows recent posts in a fixed grid layout, customization options are limited, and Squarespace controls when and how it refreshes. There's also a real-world caveat worth knowing: following Instagram's API changes on December 4, 2024, Squarespace's own Instagram blocks documentation now flags that existing blocks need to be reconnected; ones that weren't reconnected stopped pulling new content. The "native" path isn't fully hands-off either. For most small business sites, the native block is still sufficient once reconnected. If you need a specific layout or more control, paste a hosted widget snippet into a Code Block.
The paid app path. Squarespace's own Extensions marketplace and third-party services (like Elfsight's Squarespace integration) offer more layout control, but they add cost.
What we'd actually recommend. Start with the native Squarespace Instagram block. It requires no third-party service and handles the API connection for you. Only move to a hosted widget if the layout requirements go beyond what the native block can do.
The no-plugin path. Shopify's theme editor supports custom Liquid sections and HTML blocks. You can add a hosted widget snippet as a custom section or via an HTML block. If you're comfortable editing Liquid templates, you can also build a custom feed display that fetches from a JSON API. The Shopify App Store has Instagram feed apps, but a simple hosted widget snippet avoids adding another app dependency.
The app path. The Shopify App Store has several Instagram feed apps, some designed specifically for shoppable feeds (tagging products in Instagram posts so they link directly to Shopify product pages). If shoppable Instagram functionality is part of the brief, an app that supports that product-tagging workflow is the right tool.
What we'd actually recommend. For a simple "show recent Instagram posts" use case: a hosted widget snippet added as a custom section. For shoppable Instagram feed functionality: a purpose-built Shopify app with product tagging support.
The no-plugin path. Webflow's HTML Embed element accepts any <script> or <iframe> snippet. Paste a hosted widget's embed code directly into an HTML Embed element. Webflow renders it on the published site. Webflow University has documentation on HTML Embeds. The main caveat: custom embeds don't render in the Webflow Designer preview. You'll see a placeholder there, not the actual widget. Confirm rendering on the live URL.
Third-party apps. Webflow's App Marketplace currently has one dedicated native Instagram feed app (SI Instagram Feed), plus official integration documentation for Elfsight's widget in Webflow's help center. Compared to WordPress's hundreds of plugins or Squarespace's native block, Webflow's IG-specific app coverage is thinner. A hosted widget snippet is often the more flexible approach.
What we'd actually recommend. A hosted widget snippet in a Webflow HTML Embed element. It renders correctly on the published site, takes 10 minutes to set up, and avoids adding another Webflow app. Just build time into the QA process to confirm rendering on the live URL, since the Designer preview won't show it.
FeedFusion is a hosted widget service for embedding Instagram feeds. It is the kind of tool this article has been describing as a "hosted widget" option throughout.
Here is what it is: you connect your Instagram account, and FeedFusion handles the Instagram API connection, token rotation (the 60-day refresh cycle runs automatically, server-side), and image mirroring via CDN. You get a JavaScript snippet for a standard embed, or a JSON API endpoint if you prefer to build your own display. Free plan supports one feed with 10K monthly views; Pro is €5/month for five feeds and 100K monthly views; Agency is €15/month for unlimited feeds and unlimited views, plus the multi-client dashboard that's useful if you maintain Instagram feeds across several client sites.
Here is what it is not: FeedFusion is not a WordPress plugin. It does not appear in the WordPress Plugin Directory. It is a snippet you add to any site via an HTML block. It does not have Behold's polish, Elfsight's feature depth, or the app-market integrations of tools built specifically for Squarespace or Wix. It is a smaller, focused tool.
The reason it exists: it was built to handle the token rotation and CDN mirroring problem for client sites without adding a plugin to every WordPress install. The agency plan at €15/month covers all client accounts under one login. Pricing is at feed-fusion.com/pricing.
Yes. You have two practical options: Instagram's native oEmbed, which embeds a single post (not a feed grid), and hosted widget services that handle the Instagram API on your behalf and return either a JavaScript-rendered grid or a JSON endpoint. For a proper feed grid showing recent posts in sequence, you need one of the hosted options. Instagram does not provide a public API for unauthenticated feed grids, so any feed embed requires an authenticated API connection maintained by some service.
Most hosted widget services provide an iFrame embed option alongside their JavaScript snippet. To use it, you create an account with the service, connect your Instagram account, and copy the provided <iframe> HTML code. Then paste it into your site using whatever your platform calls an HTML or Code Embed block. iFrame embeds are simpler to add to strict content security policy environments, but they're less responsive by default than JavaScript-injected embeds and typically offer less layout control.
To embed a single Instagram post in HTML, use Instagram's native oEmbed endpoint. Go to the post on Instagram, click the three-dot menu, and select "Embed." Copy the provided HTML code (it includes a <blockquote> tag and a script tag) and paste it directly into your HTML. The result is a single post card rendered in Instagram's standard style. This is not a feed grid. It shows one specific post. For a live feed grid, you need a hosted widget service or direct API integration.
Sign up with a hosted Instagram widget service, connect your Instagram account via OAuth, and copy the embed snippet they provide. Then add it to your site: on Squarespace, use a Code Block; on Wix, use an HTML iFrame element; on WordPress, use a Custom HTML block; on Webflow, use an HTML Embed element; on Shopify, add it as a custom section in the theme editor. The widget will automatically refresh with your recent posts according to the service's sync interval. Most services handle Instagram token renewal automatically.
JSON API reference, widget customisation, framework integrations.
Read the docs