Embed Documentation

Embed Free File Converter — Integration Guide

A drop-in, local-first HEIC → JPG converter for any blog or docs site.

What you get. A small interactive widget where your readers drop a HEIC photo and download a JPG — converted entirely inside their browser. No upload, no signup, no rate limit. Works on desktop and mobile.

What it costs you. About 1.5 KB gzipped on your page (the script-tag loader). The 340 KB HEIC decoder loads inside the iframe in its own browser context — it does not hit your Core Web Vitals.

Live preview

Iframe embed (recommended)

Simplest, fully isolated. Paste this anywhere raw HTML is allowed.

<iframe
  src="https://freefileconverter.ai/embed/"
  width="600"
  height="400"
  style="border:0;border-radius:14px;max-width:100%;"
  loading="lazy"
  title="HEIC to JPG converter"
></iframe>

Optional iframe query parameters

ParamValuesEffect
themedark (default), lightColor theme
refany short slugEmbed attribution tag — please set this so we can see which embeds drive volume.
<iframe
  src="https://freefileconverter.ai/embed/?theme=light&ref=my-blog"
  width="600" height="400" loading="lazy"
  style="border:0;border-radius:14px;"
  title="HEIC to JPG converter"
></iframe>

Script-tag embed

Same iframe, injected via JavaScript. Useful for inheriting your container's width, or configuring via data-* attributes.

<div id="ffc-widget"></div>
<script
  src="https://freefileconverter.ai/embed/widget.js"
  data-theme="light"
  data-ref="my-blog"
  data-height="420"
></script>

Supported data-* attributes

AttributeValuesDefaultEffect
data-themelight, darkdarkWidget color theme
data-refletters / digits / - / _, ≤32 charsembed-scriptEmbed attribution tag
data-heightinteger px, 240–900400iframe height

Branding & attribution

The widget includes a small "Powered by Free File Converter" link in the bottom-right corner. This is required for free use — it's how we sustain the project (no ads, no paywall, no upload servers). Please don't hide or modify the badge.

Click-throughs from the badge are attributed via the ref you set, so different embeds across the same site (or different sites) can be tracked separately.

What gets sent to our servers?

By design, the file the reader converts never reaches our servers. Conversion runs entirely in the iframe via the open-source heic2any decoder.

Optional anonymous counter pings (one per session-start, one per successful conversion) feed our public trust counters at the bottom of freefileconverter.ai. They contain no filenames, no image bytes, and no IP-derived info beyond what Vercel logs at the edge by default.

Browser compatibility

Modern Chrome, Edge, Firefox, Safari (desktop + mobile). When required APIs (Canvas / Blob / FileReader) are unavailable, the widget shows a fallback message linking to the full converter.

FAQ

Why iframe instead of inline?

Isolation. No CSS conflicts, no globals, sandbox boundary courtesy of the browser. Drop it in, forget about it.

Will it work on WordPress / Ghost / Substack?

Yes. WordPress: paste into a Custom HTML block. Substack: use an embed block, paste the iframe.

Can I host the widget on my own CDN?

Not yet. Once we open-source the embed repo, self-hosting will be supported with a single config flag.

My users hit "Conversion failed" — what's wrong?

99% of the time the file isn't actually HEIC — some apps rename .jpg to .heic by mistake. Ask the reader to confirm the file is from an iPhone camera roll or a recent Mac screenshot.

Will the script-tag loader bloat my page?

It's ~1.5 KB gzipped. The heavy decoder loads inside the iframe in its own context and doesn't touch your critical path.

Related

Files stay on your device. No login. Installs as a PWA on iPhone, Android, and desktop.
← Back to Free File Converter