Embed · 281 tools
Put a working tool on your page
The frame below is a real tool, served from this site, running for you now. Move a control and the code underneath moves with it. That code is what you paste.
Tool
The frame is as tall as the tool inside it. Change something in the tool and the number moves.
Paste this into your page
<iframe src="https://vayce.app/embed/glitch-effect/" width="800" height="580"
style="width:100%;border:0" loading="lazy" allow="clipboard-write"
title="Glitch Effect"></iframe>
<script src="https://vayce.app/embed.js" async></script>
<p class="vayce-embed-credit" style="margin:0.5rem 0 0;padding:0 0.5rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 1rem;font-family:inherit;font-size:1rem;line-height:1.5">
<span><a href="https://vayce.app/tools/glitch-effect/?ref=embed" target="_blank" rel="noopener" style="color:inherit;display:inline-flex;align-items:center;gap:0.25rem;opacity:.8;transition:opacity .15s">Glitch Effect<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none" aria-hidden="true"><path d="M7 17 17 7M8 7h9v9"/></svg></a></span>
<span><span style="opacity:.55">from </span><a href="https://vayce.app/?ref=embed" target="_blank" rel="noopener" style="color:inherit;display:inline-flex;align-items:center;gap:0.25rem;opacity:.8;transition:opacity .15s">Vayce<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="flex:none" aria-hidden="true"><path d="M7 17 17 7M8 7h9v9"/></svg></a></span>
</p>
<style>.vayce-embed-credit a:hover{opacity:1!important}</style>The frame, plus one cached script that sizes it and matches it to your theme. Use this anywhere your editor accepts raw HTML. Several embeds on one page load the script once.
Pick the route your CMS allows
Both place the same frame. Which one you want depends on what your editor does to pasted markup.
Your editor takes raw HTML
Snippet
The default. One frame, plus one cached script that keeps it as tall as the tool inside it and matched to your page's theme. The script sets no cookies, writes no storage, and makes no request beyond the frame. Several embeds on one page share a single copy.
Your editor unfurls URLs
Pasted link
Every tool page publishes an oEmbed endpoint in JSON and XML. WordPress, Ghost and Discourse read it and place the frame themselves.
Reference
Height messages
An iframe cannot size itself to its content, so the frame measures its own body and posts the number to the parent window whenever it changes. The snippet's script applies it. Write your own instead when you want to clamp the value or animate the change.
addEventListener('message', function (e) {
if (e.origin !== 'https://vayce.app') return;
if (e.data && e.data.type === 'vayce:embed-height') {
// e.data.height is the frame's full content height, in CSS pixels.
}
});
The height attribute in the snippet is not a setting. It is
what a host renders before the script runs, or if it never does, and without it an iframe
falls back to 150px. Each tool reports its own, so no two open at the same size. A pasted
link carries no script at all, because oEmbed consumers strip
<script>, so for that route the number is the height
the frame keeps.
The allow attribute
A cross-origin iframe has clipboard write denied unless the host page delegates it. Most
of these tools are built around a copy button, so
allow="clipboard-write" is on every generated snippet.
Nothing else is requested by default. The QR reader adds
camera because it scans from a live stream.
clipboard-read is never requested: it prompts the visitor,
and no tool reads the clipboard.
Chrome parameters
Appended to the embed URL, and what the controls above write. They carry a
_ prefix so they never collide with a tool's own settings,
which use bare names.
_surface paper · plain · transparent Drops the drafting grid, or the background entirely. _pad none · snug · roomy Inset around the tool. Defaults to snug. _theme light · dark Pins a generated frame. Without it, snippets match the host page; pasted links start light. Theme
A generated snippet matches the page it sits in. Its script reads the first opaque
background behind the frame and tells the frame light or dark. It keeps watching after
that, so a theme switcher on your site re-themes the tool without a reload. Set
_theme=light or
_theme=dark to pin the frame instead. A pasted link carries
no host script or theme signal, so its oEmbed frame starts light.
Framing policy
Worth checking rather than taking on trust. Every other route here ships
Content-Security-Policy: frame-ancestors 'self' and refuses
to be framed at all. /embed/* deliberately carries no such
header, which is the reason that route exists. Read the response headers on this page and
on an embed URL.
Credit
The link under the frame is yours to keep or delete, and nothing about the tool changes
either way. It carries ?ref=embed so we can see which
sites send readers back, which is the only thing we measure about an embed.
Terms
Free for any site, commercial included. Don't reframe it as your own product.
Every embeddable tool
Each link opens that tool with its embed builder already open.
281 tools
No tool matches that filter.
Images
IMG · 131 embeddable
Text & Data
TXT · 102 embeddable
Audio
AUD · 48 embeddable