Sharing & Collaboration
Share, embed, and collaborate on calculations with permanent URLs.
Click Share to make a calc public. You’ll get a short link and can copy an edit link for collaborators.
URL Formats
View Links
Anyone with the link can use your calc (play with numbers), but the original is unchanged.
| Format | Example | Use |
|---|---|---|
/<shortId> | instacalc.com/j2k8npm | Short link |
/<shortId>/<slug> | instacalc.com/j2k8npm/mortgage-calc | Canonical link (slug is cosmetic) |
/<integer> | instacalc.com/12345 | Legacy link (still works forever) |
Edit Links
An edit link is a view link with #edit=<token> appended — it grants edit access. The token is a secret — only share it with people you trust to edit.
| Format | Example |
|---|---|
/<shortId>#edit=<token> | instacalc.com/j2k8npm#edit=x9Km4pB2tQw7RfLs |
(Older links used a bare #<token> — those still work forever.)
Editors see the same calc and their changes sync in real time. The token is never sent to the server — it stays in the browser, so it won’t leak in server logs or social previews.
Scenario Overrides
Add ?key=value to a view link to pre-fill variables. Great for sharing specific scenarios.
| Format | Example |
|---|---|
/<shortId>?rate=7.5&years=15 | instacalc.com/j2k8npm?rate=7.5&years=15 |
Overrides are read-only — the viewer sees your calc with different numbers, but nothing is saved.
Embeds
Use /embed/<id> for an iframe-friendly version of any calc. This is the
canonical form — it’s what the Copy embed code button emits.
| Format | Example |
|---|---|
/embed/<id> (canonical) | instacalc.com/embed/j2k8npm |
Embed code (responsive, lazy, and auto-resizing — what Copy embed code now emits):
<iframe src="https://instacalc.com/embed/graphing-studio" width="100%" height="400" loading="lazy" style="max-width:600px;border:0" frameborder="0"></iframe>
<script src="https://instacalc.com/embed-resize.js" async>
import CalcEmbed from "$lib/components/embed/InstaCalcEmbed.svelte";
import MiniCalc from "$lib/components/docs/MiniCalc.svelte";
import TourEmbed from "$lib/components/docs/TourEmbed.svelte";
import ThemePreview from "$lib/components/docs/ThemePreview.svelte";
import DecoratorExplorer from "$lib/components/docs/DecoratorExplorer.svelte";
import FunctionExplorer from "$lib/components/docs/FunctionExplorer.svelte";
import UnitExplorer from "$lib/components/docs/UnitExplorer.svelte";
import ThemeGallery from "$lib/components/docs/ThemeGallery.svelte";
</script> The embed-resize.js line is optional — it grows the iframe to the calc’s
content height so there’s no inner scrollbar. Remove it to keep the fixed
height. The explicit height is always present so the page doesn’t shift
(CLS 0) before the resize runs.
Tweak the embed with URL params: ?view=graph (open in graph view — also present or calc), ?theme=night, ?hideTitle=1, ?branding=0 (hide the
footer), ?rows=5 (first N rows only), or ?price=99&qty=5 to pre-fill
variables by name.
The suffix form /<id>/embed (e.g., instacalc.com/j2k8npm/embed) also
works — it’s a permanent redirect to /embed/<id>, kept so historical
iframes in the wild keep resolving.
Formula URLs
Encode a calc directly in the URL — no account or saving needed.
| Format | Example |
|---|---|
/<expression> | instacalc.com/x=100;tax=x*8%;total=x+tax |
Semicolons separate rows. Underscores become spaces. These are stateless — the calc lives entirely in the URL. For every supported shape (path, = formulas, bare math, hash, and the legacy ?d= form), see URL Integrations → Data Links.
Live Rooms
Hash-based rooms for ephemeral collaboration.
| Format | Example |
|---|---|
/#<room-name> | instacalc.com/#team-budget |
Anyone with the same link edits the same calc in real time. No account required.
Demo
Shared calc: instacalc.com/graphing-studio
Embed:
Three Signals
The URL tells you everything:
#= edit key (or live room)?= scenario override- no fragment = read-only view