MIT licensed · Self-hosted on Cloudflare

The open-source alternative to Elfsight

Self-hosted Instagram feed widgets for any website. No subscription and no view limits, just one script tag.

Free forever · Under 6 kB gzipped · Deploys in minutes

yourbrand.com
YB

Your Brand

@yourbrand

Follow
♥ 411
♥ 548
♥ 685
♥ 822
♥ 959
♥ 1096
♥ 1233
♥ 1370
index.html2 lines
<script src="…/instagram.js" defer></script>
<instagram-feed feed="YOUR_FEED_ID"></instagram-feed>

Works anywhere that renders HTML

HTMLWordPressShopifyWebflowSquarespaceWixReactNext.jsVueAstro

< 6 kB

gzipped widget

0

runtime dependencies

6 h

automatic re-sync

MIT

licensed, forever free

Built for performance and control

Everything you need to embed Instagram feeds — nothing you don't.

Edge-cached feeds

Posts are fetched once and cached in Cloudflare KV. Visitors get sub-50ms responses from the nearest edge node.

Zero-dependency widget

A single <script> tag and a custom element. Under 6 kB gzipped, no framework runtime, Shadow DOM isolation.

Visual editor

Grid, masonry, or showcase layout. Adjust columns, gap, radius, hover effects, and background color — live preview included.

Self-hosted

Runs on your own Cloudflare account. Your data, your keys, your domain. No third-party widget service.

Automatic sync

Cron triggers refresh feeds on a schedule. New posts appear without manual intervention.

Works everywhere

Plain HTML, WordPress, Shopify, Webflow, React, Vue, Next.js — if it renders HTML, it works.

Layouts

Pick a layout, tweak every pixel

Columns, gaps, radius, hover effects and colors, all with a live preview in the dashboard.

Grid

Even rows and columns. The classic profile look.

Masonry

Staggered heights that keep tall posts intact.

Showcase

One hero post with a supporting strip beside it.

Three steps to a live feed

No OAuth tokens, no API keys in the browser, no framework lock-in.

1

Create a widget

Open the dashboard, enter an Instagram username, and configure the layout — grid, masonry, or showcase.

2

Customize the design

Adjust columns, gap, border radius, background color, hover effects, and card style in the visual editor.

3

Embed anywhere

Copy the two-line snippet and paste it into any HTML page. The widget loads in under 6 kB.

Compare

Alfsight vs Elfsight

The same embeddable Instagram feed, without the subscription.

Alfsight
Elfsight
Price
Free, self-hosted
Monthly subscription for higher tiers
Widget view limits
None, beyond your Cloudflare quota
Capped per plan
Third-party branding
Never
Shown on the free plan
Source code
Open source, MIT
Closed source
Where data lives
Your own Cloudflare account
Vendor servers
Style isolation
Shadow DOM web component
Hosted embed script

API reference

A minimal REST API for managing feeds. Authenticated routes use a dev header locally.

Endpoints
GET
/api/feeds/:id

Fetch feed metadata and posts (cached via KV)

POST
/api/feeds

Create a new feed configuration

PATCH
/api/feeds/:id

Update feed settings

DELETE
/api/feeds/:id

Remove a feed

POST
/api/feeds/:id/refresh

Trigger manual feed sync

FAQ

Questions, answered

Is Alfsight really free?

Yes. The code is MIT licensed and runs on your own Cloudflare account. Small and medium sites usually fit within Cloudflare's free tier, so there is no monthly bill to pay.

Do I need an Instagram API token or OAuth?

No. Public profile data is fetched server-side through the OpenHandle API, so you only need an OpenHandle key (a free test key is available). No Instagram tokens ever reach the browser.

Can I show a private Instagram account?

No. Alfsight only displays public profiles, the same posts anyone can see on Instagram.

How often do new posts appear?

A Cloudflare cron trigger re-syncs every feed every 6 hours, and you can trigger a manual sync from the dashboard at any time.

Will the widget clash with my site's CSS?

No. The widget is a web component rendered in Shadow DOM, so your styles don't leak in and its styles don't leak out.

Does it work with WordPress, Shopify or Webflow?

Yes. Paste the two-line snippet into any HTML block or custom code embed. If the platform renders HTML, it works.

Ship your Instagram feed today

Fork the repo, deploy to Cloudflare and embed your first widget in minutes.