WordPress Instagram plugin or embed widget: which should you use?

On WordPress you have two good ways to show your Instagram feed: install a plugin that runs inside WordPress, or paste an embed code from a hosted service into a Custom HTML block. Both work, and the right choice depends less on features than on how your site is run: who maintains it, how it is cached, who edits it and whether it will stay on WordPress. This guide explains how each approach works inside WordPress and gives you a checklist for choosing.

Updated October 12, 2026

About this guide: we make Social Feed by grip space, a hosted Instagram widget, so we have an interest in one side. We have tried to be fair: plugin details come from WordPress.org’s documentation and the WordPress.org pages of two popular Instagram plugins, checked on October 12, 2026. We do not quote speed figures, because they depend on your host, theme and other plugins; measure on your own site.

The short answer

  1. Choose a plugin if your site will stay on WordPress, someone already keeps plugins updated, and you want to manage the feed inside the WordPress dashboard, or you need features such as hashtag feeds, shoppable posts or post moderation that some plugins offer on paid licenses.
  2. Choose an embed widget if you want one less plugin to update, run several sites (some not on WordPress), may move off WordPress, or want the feed managed in one place for many sites.
  3. Either is fine for a simple feed of your own account. Many sites could use both approaches equally well.

For the general pros and cons of script-tag embeds on any platform, see how to add an Instagram feed without a plugin. This article stays focused on what is specific to WordPress.

How an Instagram plugin works inside WordPress

WordPress.org describes plugins as “PHP scripts that extend the functionality of WordPress.” An Instagram feed plugin runs on your own server, as part of WordPress:

  1. You connect Instagram in the dashboard. The plugin stores the connection in your WordPress database.
  2. The plugin fetches posts on the server and saves a copy. Smash Balloon’s WordPress.org changelog mentions background caching through WordPress cron, and says the feed updates on page load if cron is behind schedule.
  3. It may store images on your site. Smash Balloon’s page lists local WebP images as a free feature; Spotlight’s says it “includes its own clever caching and image optimization” and prioritizes locally downloaded thumbnails.
  4. You place the feed with WordPress tools: a block, a widget or a shortcode. Smash Balloon uses shortcodes such as [instagram-feed feed=2]; Spotlight uses [instagram feed="456"], and both offer a block and a widget.
  5. WordPress builds the feed’s HTML into the page that is sent to the visitor.

Because the plugin keeps a saved copy, it can keep showing posts when Instagram is unreachable. Smash Balloon’s page says that when Instagram’s rate limit is hit, “Your feed keeps showing its saved posts and retries on its own once the limit clears.”

Plugins also have requirements. On the day we checked, Smash Balloon’s free plugin listed WordPress 4.1 or higher and PHP 7.4 or higher; Spotlight listed WordPress 6.3 or higher and PHP 7.1 or higher. Both said they were tested up to WordPress 7.1.3.

How an embed widget works inside WordPress

A hosted widget does its work outside WordPress. With Social Feed by grip space, you connect Instagram and design the feed in our dashboard, then paste one line into a Custom HTML block:

<script type="text/javascript" src="https://n246.grip.space/api/v1/instagram/widget/xxxxxxxx"></script>

WordPress stores that line like any other content. When a visitor opens the page, their browser loads the script, which fetches your posts and builds the feed right next to the tag. Images and videos load directly from Instagram’s servers. Nothing is installed, nothing runs on your server, and the script sets no cookies and uses no local storage.

The one WordPress-specific catch is permissions. WordPress’s Custom HTML documentation says that users without the unfiltered_html capability have their content sanitized, “stripping disallowed tags such as <script> and <iframe>.” On a single site, administrators and editors normally have that capability; on a multisite network, only Super Admins do. If your code disappears after saving, our article WordPress removed your embed code? walks through every cause and fix.

Side by side, on WordPress

Instagram pluginEmbed widget (hosted script)
Runs onYour WordPress server (PHP)The service’s servers and the visitor’s browser
Feed settings live inYour WordPress databaseThe service’s dashboard
Placed withBlock, widget or shortcodeCustom HTML block, widget area or theme template
Who can place itAnyone who can add the block or shortcodeOnly users who can save scripts (unfiltered_html)
Updates to maintainPlugin updates, compatibility with WordPress and PHPNone on your site
ImagesOften stored and optimized on your siteLoaded from Instagram’s servers
When Instagram is unreachableCan show the saved copyDepends on the service’s caching
Page cachingFeed HTML is cached with the pagePage cache stores only the script tag; posts load when the page is viewed
Other platformsWordPress onlyAny site that accepts HTML scripts
MultisiteInstalled by the network admin; license terms varySuper Admin must place the code, or use a shortcode wrapper

Maintenance: updates are the real difference

WordPress.org’s plugin documentation recommends keeping plugins current: developers update them “by adding new features, improving code quality, and keeping them secure,” and updating “helps to improve your site’s WordPress security and performance.” It also warns: “Always make sure you have a current backup of your site before updating your plugins. Sometimes problems can happen during the update process.”

In practice, a plugin adds a little to your routine:

  1. Watch for updates under Dashboard → Updates, or turn on automatic updates for the plugin in Plugins → Installed Plugins with the “Enable auto-updates” link (available since WordPress 5.5).
  2. Check compatibility after major WordPress releases. WordPress shows “Compatible with your version of WordPress” or “Untested with your version of WordPress” on the Add Plugins screen.
  3. Troubleshoot conflicts by deactivating plugins one at a time, which is the method WordPress.org suggests when you do not know which plugin causes a problem.

None of this is hard, and well-maintained Instagram plugins update regularly; both plugins we looked at had been updated within the last few weeks. But if your site already has many plugins, or the person who maintains it is not always around, one less plugin is a real benefit. With an embed widget, the script is updated on the service’s side and nothing on your site changes.

The flip side: with a hosted widget, you depend on the service staying available and maintained. With a plugin, the code sits on your server, though it still depends on Instagram’s API and on the developer to keep up with Instagram’s changes.

Page caching and fresh posts

Most WordPress sites use page caching, through a caching plugin or the host. This affects the two approaches differently.

With a plugin, the feed’s HTML is part of the cached page. A new Instagram post appears only after the plugin has fetched it and the page cache has been refreshed. Spotlight’s changelog mentions integration with WP Rocket and LiteSpeed Cache, which suggests plugin developers take this seriously; check your plugin’s documentation for how it clears caches.

With our widget, the cached page contains only the script tag. The script is served with no-cache headers and fetches posts when the page is viewed, so your page cache does not hold back new posts. They appear on the schedule of your plan: once a day on Free, and right away on paid plans. If the feed still looks old, see Instagram feed not updating.

JavaScript optimization plugins: some caching and performance plugins delay or combine JavaScript. If the feed appears late or not at all, exclude the widget’s script from those features. Our article on where to place a widget script has more on this.

Performance: where the work happens

Both approaches can be fast or slow depending on setup, so treat claims either way with care, including ours.

  1. A plugin does its work on your server, adds its own CSS and JavaScript to pages, and can serve optimized images from your own domain. On a slow or busy host, that extra server work matters; on a fast host with good caching, it may not.
  2. A hosted widget adds one script request and then image requests to Instagram’s servers from the visitor’s browser. With our widget, only the first row of a grid loads straight away; the rest load as the visitor scrolls.

To compare on your own site, put each option on a test page and run PageSpeed Insights or your browser’s Network panel. Our articles on a feed slowing down your site and Core Web Vitals and third-party embeds explain what to look for.

Who edits your site matters

This point is easy to overlook. A plugin’s block or shortcode is ordinary content, so authors and editors can add the feed to new pages without special permissions. An embed code contains a script, so only users with unfiltered_html can save it.

If your content team is made up of authors, or you run a multisite network where only the Super Admin has unfiltered_html, a plugin may be easier day to day. With our widget, two simple workarounds are to put the feed in a place an administrator sets up once, such as a footer template part or a widget area, or to wrap the code in a small shortcode that authors can then type, as shown in our guide to removed embed codes.

When the Instagram connection breaks

Every Instagram feed, plugin or widget, depends on an access token from Instagram. Tokens are renewed automatically, but some events, such as changing your Instagram password, can cancel them. What happens next differs.

A plugin with a saved copy can keep showing older posts while the connection is broken. That is good for visitors, but it can hide the problem: Smash Balloon’s changelog for version 6.13.0 mentions adding a notice when a feed has “quietly been showing an older saved copy of its posts.” Check your plugin’s admin screens from time to time.

With our widget, the dashboard shows the problem and a “Reconnect Instagram account” button, which works on every plan and keeps your widgets, settings and embed code. On the Free plan the saved posts can keep showing for up to 24 hours; on paid plans the feed empties on the next load, so you notice quickly. See Instagram access token expired for the full steps.

Privacy and cookie consent

If you use a cookie consent plugin, check how your feed fits in. Smash Balloon’s WordPress.org page says the plugin “automatically integrates with many of the popular GDPR cookie consent plugins” and has a one-click GDPR setting, and serves images from your own site. That is a real advantage of plugins designed for WordPress.

Our widget sets no cookies and uses no local storage, and view counts do not identify visitors. Images and videos load from Instagram’s servers, so visitors’ browsers connect to Instagram when the feed is shown. If your consent setup blocks third-party content until visitors agree, treat the widget like other embedded content, and mention it in your privacy policy. When in doubt, ask a privacy professional.

Agencies and client handover

If you build WordPress sites for clients, think about the months after launch. A plugin becomes part of the client’s update routine, and a paid license must be renewed by someone. If the client lets updates slide, the feed plugin is one more thing that can fall behind.

With a hosted widget, the client’s site holds only the embed code. Design changes happen in the dashboard without touching the site. Make sure the client knows who owns the widget account and that a password change can require reconnecting Instagram.

WordPress.com

On WordPress.com, both approaches depend on your plan. Its support page says installing plugins “is available on all WordPress.com paid plans: Personal, Premium, Business, and Commerce plans,” and lists adding custom code such as JavaScript from the Personal plan. On the free plan, you cannot install a plugin, and script tags are removed. Check your plan before choosing.

Moving off WordPress, or running several sites

A plugin’s feed exists only inside that WordPress site. If you rebuild on Shopify, Squarespace, Webflow or another platform, you need a new tool and a new setup. If you run several sites, each needs its own installation, and paid plugin licenses are usually sold per number of sites.

An embed widget moves with you: paste the same code on the new site and the feed looks the same. One dashboard can manage feeds for several sites, and our plans count widgets and monthly views rather than sites. If you are planning a move, our Smash Balloon alternative article walks through switching step by step.

Features: compare the specific tools

Feature lists vary much more between individual tools than between the two approaches. Some examples from the pages we checked:

  1. Smash Balloon’s free plugin includes multiple feeds and accounts, a visual customizer and a Load More button; its WordPress.org page lists the lightbox, captions, hashtag feeds and moderation among Pro features.
  2. Spotlight’s free plugin includes unlimited accounts and feeds and a popup lightbox; hashtag feeds, tagged posts, filtering and moderation are on its PRO license.
  3. Social Feed by grip space includes the lightbox, account header, Follow button and filters (Reels, carousels, videos, last 30/90/365 days, caption keywords) on every plan, including Free. It shows one Instagram account per widget, with no hashtag feeds, shoppable posts or post-by-post moderation.

Our comparison of 10 Instagram feed tools lays out prices and limits of plugins and hosted widgets side by side.

A checklist for choosing

QuestionPoints to a pluginPoints to an embed widget
Will the site stay on WordPress?Yes, for the foreseeable futureNot sure, or a move is planned
Who maintains the site?Someone updates plugins regularlyNobody in particular, or a client after handover
How many plugins already?FewMany, and you want fewer
Who adds the feed to pages?Authors and editors without unfiltered_htmlAn administrator, once
How many sites?One WordPress siteSeveral, possibly on different platforms
HostingFast host, good cachingShared or limited hosting
FeaturesHashtags, shoppable posts, moderationYour own account, with filters and a lightbox

Three typical situations

These are illustrations of how the checklist plays out, not real customers.

  1. A small café site on shared hosting, run by the owner. The owner logs in a few times a year and is the only administrator. Fewer plugins means fewer update notices to deal with, so an embed widget on the home page and in the footer is a good fit. A free plan is often enough for this kind of traffic.
  2. A blog with several authors. Authors write posts and sometimes want a feed of the brand’s Instagram inside an article. They do not have unfiltered_html, so they cannot paste a script. A plugin with a block or shortcode, or an administrator-made shortcode that wraps the embed code, keeps them independent.
  3. A store moving from WooCommerce to Shopify next year. A plugin feed would have to be rebuilt after the move. An embed widget set up now can be pasted into the new Shopify theme unchanged (Shopify guide).

Using our widget on WordPress

  1. Create the widget. Sign up, click “+ Connect Instagram account” and sign in with an Instagram Business or Creator account (how to switch). Design it in “Settings & preview”.
  2. Copy the code from “Add the embed code to your website”.
  3. Add a Custom HTML block where the feed should appear (type /html in the editor), paste the code and save. For a footer or sidebar, use a widget area or the Site Editor.
  4. Check the published page. The editor may not run the script, so view the live page.

Our WordPress guide covers pages, widget areas and block theme templates in detail.

Frequently asked questions

Is a plugin more secure than a script?
Neither is automatically safer. A plugin is code running on your server, so keeping it updated matters, as WordPress.org advises. A script runs in visitors’ browsers, so only use embed codes from services you trust. Either way, give script and plugin permissions only to people who need them.

Can I switch later?
Yes. Both read your posts from Instagram, so there is no data to migrate. Replace the block or shortcode with the other option, check the live pages, then deactivate and delete the plugin if you no longer need it.

Will deleting a plugin remove the feed from my pages?
Yes, the feed stops showing wherever its block or shortcode was used, and a shortcode may show as plain text. Replace those first.

Can I run a plugin and the widget on the same site?
Yes, they do not interfere with each other. Just make sure a page does not show both by accident, for example a plugin feed in the sidebar and the widget in the content. See Instagram feed showing twice.

Do I need a professional Instagram account?
For our widget, yes, and the same applies to plugins using Instagram’s current API, since Meta retired the Basic Display API in December 2024 (what changed).

Sources

  1. WordPress.org, “Manage Plugins” (what plugins are, updates, backups, auto-updates, compatibility, troubleshooting): https://wordpress.org/documentation/article/manage-plugins/
  2. WordPress.org, “Custom HTML” block (unfiltered_html and script stripping): https://wordpress.org/documentation/article/custom-html/
  3. WordPress.org plugin page, Smash Balloon Social Photo Feed: https://wordpress.org/plugins/instagram-feed/
  4. WordPress.org plugin page, Spotlight Social Feeds: https://wordpress.org/plugins/spotlight-social-photo-feeds/
  5. WordPress.com, “Install a plugin” (plans that allow plugins and custom code): https://wordpress.com/support/plugins/install-a-plugin/
  6. Social Feed by grip space: pricing and about the service

Get your embed code in a few minutes. The Free plan needs no credit card.

Sign up free