Turn a Workshop Calculation into a URL with Artifacts — How It Differs from ChatGPT Sites

A formula written out in an article is something a reader has to retype. The same formula behind a few input boxes is something they can use. Artifacts are the shortest path from one to the other, and this site took it: the cost formula from our 3D printing pricing article is now a calculator on a page.
This article covers what an artifact is, who can see one, the constraints of a single static page, what we decided while turning a formula into a tool, and where the line falls against ChatGPT Sites.
- What an artifact is
- Who can see it
- One static page, and what that rules out
- Live data runs on the viewer’s connectors
- Against ChatGPT Sites
- What we built: a 3D printing cost calculator
- Four decisions a formula does not make for you
- Checking it against the article
- Publishing, permission modes, and versions
- Comments and editors
- Why we are not making ours a public link
- What to turn into a URL at the 3D printing bench
- The short version
- Sources
What an artifact is
An artifact is a live, interactive web page that Claude Code publishes from your session to a private URL on claude.ai. You open it in a browser and it updates in place as the session continues. Claude may publish one on its own when the output suits a page, or you can ask directly.
Unless you name a location, Claude writes the page to an HTML or Markdown file in a temporary directory outside your project and publishes that. Each publish becomes a version, and from the Share control in the page header you choose which version viewers see. To update one from a different session, give Claude its URL or attach it with /artifacts; without either, a new session creates a new artifact instead.
Availability is narrower than it first looks. It needs Pro, Max, Team, or Enterprise; a session signed in with /login rather than an API key, gateway token, or cloud provider credential; the Anthropic API as the model provider, so not Bedrock, Google Cloud’s Agent Platform, or Microsoft Foundry; an organization without CMEK, HIPAA, or Zero Data Retention; and Claude Code v2.1.183 or the desktop app v1.13576.0 or later.
Who can see it
| Pro / Max | Team | Enterprise | |
|---|---|---|---|
| Feature default | Available, no admin management | On by default | Unavailable until an Owner enables it |
| Right after creation | Visible only to you | Same | Same |
| Sharing inside the organization | Not available | Specific people, or everyone in it | Same |
| Public link | The only way to share | Off until an Owner turns on External sharing | Same |
| Editors as well as viewers | Not available | Available | Available |
A viewer in your organization can see who published a page. Someone opening a public link without signing in, or from outside your organization, sees the label Content is user-generated and unverified instead of your name.
One static page, and what that rules out
| Constraint | What it means |
|---|---|
| External resources | Scripts only from cdnjs, the Tailwind CDN, the jQuery CDN, and selected jsDelivr paths. Fonts only from Google Fonts. All external images and stylesheets are blocked, and fetch, XHR, and WebSocket calls reach only the page origin and the Google Fonts hosts |
| Backend | None. The page cannot authenticate viewers itself |
| Downloads | The page cannot start one. A downloads capability has to be declared, and it is enabled per account |
| Pages | One. Relative links do not resolve, so multi-section content uses in-page anchors |
| Source format | .html, .htm, or .md, decoding as UTF-8, or as little-endian UTF-16 by its byte-order mark |
| Rendered size | 16 MiB or smaller |
Read as a list these look restrictive. Read as a design brief they are clarifying: an artifact is a capture of work, not a deployment. Anything that needs to store what a viewer typed, or check who they are, belongs on infrastructure you run.
Live data runs on the viewer’s connectors
A page can call MCP connectors each time someone views it, so it shows current data rather than a snapshot. The detail that shapes the design is whose account makes the call: it is the viewer’s, not the publisher’s. Two people opening the same dashboard can see different data, claude.ai asks each viewer for permission before the first call, and the page never sees anyone’s credentials.
There is a hard consequence. An artifact that calls connectors cannot be shared to a public link on any plan. On Pro and Max, where a public link is the only sharing route, adding connectors means the page stays private to you. Choose one or the other before you build.
Against ChatGPT Sites
| ChatGPT Sites | Claude Code artifacts | |
|---|---|---|
| Standing | Public beta, on Plus, Pro, Business, Enterprise, and Edu | Pro, Max, Team, Enterprise. CLI 2.1.183 or Desktop 1.13576.0 and later, signed in to claude.ai, Anthropic API as the provider |
| Right after creation | Owner and workspace admins only | Creator only |
| Public | Yes, with admin enablement on Enterprise | Pro and Max can only share publicly; Team and Enterprise cannot until an Owner enables it |
| Backend | Yes, a 10 GB database and object storage | None. One static page |
| External data | Depends on what the site implements | Through the viewer’s own connectors, and adding them blocks public sharing |
| Custom domain | Possible, conditionally | Not documented |
| Prohibited uses | Health information, card payments, under-13 users, financial transactions except sales through a third-party payment provider, among others | Not enumerated in the documentation |
The two are different animals wearing the same clothes. Sites is a small hosted web application that holds data and can take a domain. An artifact is one page that captures a session’s output and can only display and calculate. A cost calculator that takes input and computes on the spot needs the latter. A tool that takes orders and records them needs the former.
What we built: a 3D printing cost calculator
On September 17 we took the formula from our pricing article unchanged and built it as a private artifact. Three panels: eight input fields on the left, each with its formula or a one-line note; results on the right; and a target-margin panel at the bottom that works backwards from a margin to a price.
The results table repeats the row structure from the article exactly: material, electricity, machine amortization, direct subtotal, adjusted for failure rate, post-processing, packaging, shipping, platform fee, total. Above it sit two totals, cost with labour and cost without, because the article recommended carrying both. One is the floor below which you are losing money; the other is the test of whether the work is worth doing.
Defaults are the article’s worked example: filament at 3,000 yen per kilogram, 80 grams used, 15 percent added for purge and supports, 120 W for 5 hours at 31 yen per kWh, an 80,000 yen printer amortized over an assumed 2,000 hours, a 90 percent success rate, 15 minutes of post-processing at 1,200 yen an hour, 60 yen of packaging, 240 yen of shipping, a 2,000 yen sale price, a 10 percent platform fee, and a 40 percent target margin. At roughly 150 yen to the dollar, the sale price is about 13 dollars.
Nothing a reader types is sent anywhere. The only external load is two typefaces from Google Fonts; every script is inlined. We declared neither connectors nor the downloads capability, the first because it would rule out a public link, the second because it is enabled per account and we have not confirmed our environment has it.
Four decisions a formula does not make for you
- Units and step size. Usage in grams, power in watts, time in hours, money in yen. Step sizes follow how the quantity actually varies, so filament weight steps in single grams while printer price does not.
- Which numbers are assumptions. Assumed lifetime hours and success rate are guesses dressed as inputs. Each one carries a note saying so, because a reader who does not notice will trust the total more than it deserves.
- Two totals, not one. Showing only the labour-inclusive cost hides the break-even point; showing only the labour-free one hides that you are working for nothing. The article said carry both, so the tool carries both.
- Showing the working. The target-margin panel prints its check alongside its answer, because the obvious arithmetic is wrong here.
Checking it against the article
| Item | Article | Calculator |
|---|---|---|
| Cost including labour | 1,350 yen | 1,350 yen |
| Cost excluding labour | 1,050 yen | 1,050 yen |
| Gross profit at a 2,000 yen price | 650 yen, 32.5% | 650 yen, 32.5% |
| Price for a 40% target margin | 2,300 yen | 2,300 yen |
That last row is the one worth dwelling on, because dividing the cost by 0.6 gives 2,250 yen and that answer is wrong. The platform fee is a percentage of the sale price, so raising the price raises the cost with it. Solving properly, with 1,149.56 yen of price-independent cost and a 10 percent fee, gives 0.5P equals 1,149.56 and a price of about 2,299 yen.
Fifty yen is not much. The habit is: when a calculation looks slightly off, check whether the thing you are dividing is actually constant before you assume the source is wrong.
Publishing, permission modes, and versions
Publishing a new artifact goes through the session’s permission mode. In Auto mode the classifier reviews the publish instead of prompting, so a page can go up without you seeing a prompt. In Manual and Accept edits modes Claude Code asks first. After you approve once, it republishes without asking, and asks again in specific cases: when the page declares a runtime capability such as connector calls or downloads, when you have since shared it publicly, or when you have shared it with people or your organization with the latest version chosen as what viewers see.
Ctrl+] reopens the session’s most recent artifact. /artifacts lists every artifact you own and every one shared with you, reading from your claude.ai account, so it still works in a new session and after /clear.
Comments and editors
Comments need Team or Enterprise, because only an artifact shared within your organization takes them, and Claude Code v2.1.221 or later. Someone who can edit the artifact activates a thread by sending a comment to Claude or mentioning @claude; Claude can reply to or resolve only an activated thread. If you share the artifact publicly, commenting stops entirely, and threads have to be deleted before switching a commented artifact to a public link.
Editors are also Team and Enterprise only. An editor publishes new versions the way you update from another session: give Claude the URL, or attach it from /artifacts, and Claude pulls the current content and republishes.
Why we are not making ours a public link
On Pro and Max a public link is the only way to share, and a public link is public: anyone on the internet, no sign-in. For a calculator that stores nothing and sends nothing, that is defensible. We have kept it private anyway, for a reason that has nothing to do with the tool and everything to do with the numbers in it.
The defaults are a worked example from one article, tuned to one printer and one market. Published without that context they read as recommended values. When we do open it, it will be alongside the article, not on its own.
What to turn into a URL at the 3D printing bench
- A cost or quoting calculator whose formula already lives in a post
- A filament drying reference where the reader picks a material and sees the temperature and time
- A layer-height and nozzle chooser that turns a table into two dropdowns and an answer
- A side-by-side comparison of print settings that is easier to look at than to read
What does not belong: anything that has to remember what the visitor typed, anything that needs to know who they are, and anything whose value depends on data only you can see, because on a public link the connector route is closed.
The short version
- An artifact is one static page on claude.ai, private until you share it, updated in place with versions
- Pro and Max can share only by public link; Team and Enterprise can share inside the organization, and public sharing there is off until an Owner enables it
- Constraints that shape the design: no backend, one page, 16 MiB, a short allowlist of script and font hosts
- Connector-backed pages run on the viewer’s account and can never be shared publicly
- Against ChatGPT Sites, the split is data versus display: Sites holds data and takes a domain, an artifact displays and calculates
- Our calculator reproduces the article’s four headline figures exactly, including the 2,300 yen that a naive division gets wrong





