Claude Artifacts alternative: Homespun vs Artifacts
Most people looking for one do not need one. A published Claude Artifact exists seconds after you ask, inside the conversation, and anyone can open it with no account at all. Nothing on this page beats that. What an artifact structurally cannot do is tell two people apart, so anything involving names, roles, private rows or files hits a wall that no prompt can move. Homespun is the same agent-built app with sign-in, per-collection permissions, uploads, and a database the agent keeps working on afterwards. If your thing is short lived, solitary or genuinely public, stay where you are.
Last checked against Anthropic's documentation on . Claude changes often. If something here no longer matches the help centre, the help centre is right.
Which of the two you are actually looking for
Searches for an artifacts alternative come from about six places, and four of them have a better answer than switching. Find your row before you read anything else.
| What you are trying to do | The better answer |
|---|---|
| Show someone a chart, a report, an annotated diff, a set of options | A published artifact. This is the job it was built for and it does it better than a hosted app would |
| Hand a stranger a calculator, a quiz, an interactive explainer | A published artifact. There is no account wall at all, which nothing account-based can match |
| Keep your own state in a tool only you use | A published artifact with personal storage. Private per viewer, nothing to provision |
| Let a crowd write into one anonymous pool: a tally, a guestbook, a word list | A published artifact with shared storage, as long as nobody minds that every row is anonymous |
| Let a named group put data in and each get their own view back | Not an artifact. This is the wall, and it is architectural rather than a missing feature |
| Store a photo, a PDF, a receipt, a file of any kind | Not an artifact. Storage is text only, with no documented way around it |
If you landed in one of the first four rows, the honest advice is to close this tab and carry on. There is a whole section below on why, and it is the longest one here. If you landed in the last two, the rest of this page is the comparison you came for.
What a published artifact is, in Anthropic's own words
The whole comparison falls out of one sentence in Anthropic's developer documentation, and it is worth reading before any table.
An artifact is a capture of work, not an application.
Share session output as artifacts, Claude Code documentation
That is a design statement, not an apology, and the documented page constraints follow from it directly.
An artifact is a static page. It can't store data submitted through a form or authenticate viewers itself.
Share session output as artifacts, Claude Code documentation
The CSP blocks scripts, stylesheets, fonts, and images loaded from any other host, along with fetch, XHR, and WebSocket calls.
Share session output as artifacts, Claude Code documentation
- One page, no routes. Relative links do not resolve, because nothing is deployed alongside the page.
- Storage exists, on paid plans, with conditions. Persistent storage for artifacts is available on Pro, Max, Team, and Enterprise plans on Claude web and desktop. It is capped at a 20 MB storage limit per artifact, takes text only with no images, files, or binary data, and answers nothing until the artifact is published. The full picture is in what Claude Artifacts can and cannot store.
- No identity. The page cannot authenticate a visitor, so it cannot know which of them is which.
One part of that has changed, and it cuts against the simple version of this story, so it belongs here rather than buried:
Connector calls are the exception: the page hands them to claude.ai, which makes the network call itself.
Share session output as artifacts, Claude Code documentation
An artifact can call MCP connectors when someone views it, so a page really can show live data instead of a snapshot from the session that built it. Two properties decide what that is good for.
calls go through the viewing account's connected tools, so two people opening the same dashboard can see different data depending on what their accounts can access
Share session output as artifacts, Claude Code documentation
An artifact that calls connectors can't be shared to a public link on any plan.
Share session output as artifacts, Claude Code documentation
So a connector-backed artifact is an excellent personal dashboard over data the viewer already has access to, and it is still not a shared application: the data belongs to whoever is looking, and the page cannot be public on any plan. Anyone telling you an artifact can never reach outside data is a version behind, and anyone telling you connectors close the gap has not read the second half.
Homespun and Claude Artifacts side by side
Homespun is where the same agent that built the thing can host it. People sign in with their email, so the app can tell who is who and every row remembers who created it; permissions are set per collection, so some people can approve and others can only submit; and the agent keeps read and write access to the collections it is allowed, so it can keep working on the data instead of handing you a page and walking away. It is free today, and there is no paid plan to buy.
The comparison, with the rows where an artifact wins left in.
| Published Claude Artifact | Homespun app | |
|---|---|---|
| Time to a working version | Seconds, inside the conversation | One deploy call the agent makes for you |
| Deploy step | None. Publishing is a click | Yes, and it is the price of everything below |
| Where it lives | One self-contained page on claude.ai | Its own subdomain, or a domain you own |
| What a reader needs | Nothing at all | An emailed link or a Google account, unless the app admits signed-out visitors |
| Knows who is looking | No | Yes, once they sign in |
| Rows record who created them | No, there is no author on a record | Yes |
| Roles and permissions | None | Set per collection |
| Files, images, PDFs | No, text only | Yes |
| Emails someone when a row changes | No | Only if the app declares a notify rule. None of the built-in templates does |
| Push notifications to a phone | No | No |
| Live data from your other tools | Yes, through the viewer's own MCP connectors | No, the app owns its own data |
| The agent can keep working on the data | No, it sees only what you paste back | Yes, on the collections the manifest allows |
| Taking it down | Permanent, and it deletes the stored data | Reversible, and the data stays |
| Price | Included in a Claude plan you already pay for | Free today, and there is no paid plan to buy |
| Who is behind it | Anthropic | A small independent product with no revenue yet |
The last two rows are a pair, and they are not in our favour. Free is only an advantage while the thing running your data is still there, and an artifact is running on infrastructure somebody is paid to keep up.
The limits, with the actual numbers
Adjectives are useless in a comparison table, so these are the documented figures on both sides rather than "generous" and "flexible".
| Limit | Published Claude Artifact | Homespun app |
|---|---|---|
| Structured data | 20 MB of storage per artifact | 100,000 rows per app, across all its collections |
| One record | Not separately documented | 64 KB of data per row |
| Uploaded files | Not supported at all | 100 MB per app, 5 MB per file, 50 MB for an audio or video file |
| What a record may contain | Text only: no images, files, or binary data | Text, numbers, dates, links to other rows, and attachments |
| File types accepted | None | Images, PDFs, audio, video, CSV, JSON, ZIP and Office documents. Not SVG, HTML or JavaScript |
| Plans that get any storage | Pro, Max, Team and Enterprise, on web and desktop | Every account |
| Storage before publishing | None. Writes do not succeed until published | Works from the first deploy |
| Pages | One page, and relative links do not resolve | One page too, plus files deployed alongside it, so relative links do resolve |
| Query language | None. Storage is keys and values | Filters over a collection, no SQL: eight operators, sorting, 1,000 rows a page |
Two of those rows deserve more than a cell. The 20 MB figure is far more generous than it sounds for text records and completely useless the moment somebody wants to attach a photo of a receipt, which is the practical shape of that ceiling: it is rarely the size that stops people, it is the type. And the last row is not a win so much as a difference in kind, because filters over a collection are a long way short of SQL. If what you actually want is a real database, the honest answer is an MCP server onto one you already own, which is covered in full on the connecting Claude to a database page.
Identity, which is the whole of the difference
Every other row in every table above is downstream of one thing: an artifact has no way to know who is looking at it, and a hosted app does. It is worth being concrete about what that buys, because "user accounts" sounds like paperwork until you need one of these.
| What you need | Published artifact | Homespun app |
|---|---|---|
| Each person submits their own entry | Works, but the row has no owner. It is a row somebody wrote | Works, and the row records who created it |
| Each person sees only their own entries | Not possible. Shared storage shows everyone everything | Yes |
| Only one person can approve | Not possible. Any visitor can flip any field | Yes, by giving that role write access and the rest read access |
| Nobody can delete somebody else's row | Not possible. Everyone has the same power over every record | Yes |
| You can tell who did what | Not possible. There is no identity to record | Yes |
| Only invited people can get in | No. The link is the access control | Yes, a private app is invite only |
The two artifact storage pools are the closest thing available and neither one closes this gap: Personal storage: Each user maintains their own private data, so nobody can see anybody else's, while Shared storage: All users see and interact with the same data, so everybody can see everybody's. What almost every real request needs is the middle, one dataset where the app knows which person is looking, and that middle does not exist. The long version is in whether other people can use your Claude Artifact.
Sharing: who can open it, and what it costs them
This is the axis where an artifact wins outright, and it is worth quoting rather than conceding vaguely.
share a link that anyone on the internet can open, with no claude.ai sign-in required
Share session output as artifacts, Claude Code documentation
View and interact with any published artifact without signing up. Try all basic functionality without a Claude account.
Publish and share artifacts, Claude Help Center
| Published artifact | Homespun app | |
|---|---|---|
| Cost of opening it | Nothing. No account, no sign-in, no email | An emailed sign-in link, valid fifteen minutes, or a Google account. There is no password |
| Sending an update | Publish again, the link stays the same | Deploy again, the address stays the same |
| Works for strangers at scale | Yes, this is its best case | Only if the app admits signed-out visitors, and then it knows them only by browser |
| Works for a named group | No | Yes, this is its best case |
| Someone can take a copy and change it | Yes, with a Claude account. The copy is independent | Yes, if you publish it as a template |
| Restricted to your organisation | On Team and Enterprise, yes, and public sharing may be off | A private app, by invitation |
Worth being precise about that third row, because it is the one place the two products nearly meet. A Homespun app set to link or public can let signed-out visitors in, and each one gets a stable identity tied to their browser rather than to an account, which is enough to give a visitor their own rows in a shared collection. It is not enough to know that the person is Priya, and it does not survive a different device. So it narrows the gap for a one-off public form and does not close it for anything that has to recognise a person.
Two things about the last row trip people up in opposite directions. The help centre states the restriction flatly:
Artifacts created on Team or Enterprise accounts can only be shared within your organization
Publish and share artifacts, Claude Help Center
while the developer documentation describes the switch that lifts it:
On Team and Enterprise plans, public sharing is off until an Owner enables it for the organization.
Share session output as artifacts, Claude Code documentation
Both are current. The practical reading is that on a work account you cannot assume you can publish to the open web, and whether you can is your administrator's decision rather than a setting on the artifact. On a personal Pro or Max account it is simply yours. More on the mechanics in how to share a Claude Artifact with other people.
What happens when you want to take it down
This is the axis people do not think about until it is too late to think about it, and it is the sharpest single difference on the page.
Unpublishing also permanently deletes all associated storage data (both personal and shared) if the artifact used persistent storage.
Publish and share artifacts, Claude Help Center
Once you unpublish an artifact, you cannot publish that same artifact again.
Publish and share artifacts, Claude Help Center
| Published artifact | Homespun app | |
|---|---|---|
| Taking it offline | Permanent, and it deletes the stored data | Reversible, and the data stays |
| Getting the data out first | Only if you build an export control and republish | Read every row out as JSON at any time. There is no one-click download |
| Publishing again at the same address | Impossible for that artifact, ever | Normal. The address is stable |
| Recovering from a mistake | No path at all | Nothing was deleted, so there is nothing to recover |
| Rolling back to an older version | Pick an older version in the share control | No rollback. You redeploy forward |
| Warning to the people using it | None. The link simply stops working | You decide |
Two of those rows are ours to own. There is no export button on a Homespun app: getting your data out means reading the collections through the API, the CLI or an agent, which is a complete export but not a packaged one. And there is no rollback, only redeploying forward. What sits in its place is a compatibility check that refuses a redeploy which would strand rows you already have, so the usual reason to want a rollback does not arise, but if you wanted one it is not there.
Read fairly, the artifact behaviour has a real virtue that we do not match: when you unpublish, the data is actually gone, with no forgotten copy on a host you stopped paying attention to. If you are taking something down because it should never have been up, that is exactly the tool you want. It is only the wrong property for the thing fifteen people use every week. The detail, including how to export before you press it, is in what happens when you unpublish a Claude Artifact.
What the agent can do once the thing exists
This is the difference nobody puts in a feature table and it changes what the tool is for. When Claude finishes an artifact, the conversation is where the relationship ends: the page holds data the model cannot see, and the only way to bring any of it back is to paste it.
| After it is built and people are using it | Artifact | Homespun app |
|---|---|---|
| The agent can read the data people entered | No, only what you paste back into the chat | Yes, on the collections the app's manifest allows it |
| The agent can write or correct a record | No | Yes, where the manifest grants write access |
| The agent can summarise this week's entries on a schedule | No | Yes, from any agent that can reach the relay, including a cron job |
| It can email the owner when a row is added | No | Yes, if the app declares a notify rule. Only verified account addresses, never an arbitrary one |
| The agent can change the app itself | Yes, by republishing it | Yes, by deploying again |
| Access is scoped rather than total | Not applicable | Yes. Access is declared per collection, not granted wholesale |
That last row matters more than the ones above it. An agent with unconditional access to everything an app holds is a liability rather than a feature, so what a Homespun agent may read and write is declared in the app's manifest per collection, and a collection that is not named is not reachable. Related reading on the general problem: how to connect Claude to a database, which covers the third option, an MCP server onto a database you already own.
When to keep using Artifacts and ignore this page
This is the section a comparison page normally leaves out, which is why it is the longest one here. There is a large class of things where an artifact is not a compromise you make until you can afford a real app. It is the better product, and moving to a hosted app would make the result worse.
- Anything short lived. Something you need for a weekend, a workshop, one sprint, one meeting. There is nothing to provision, nothing to bill, nothing to remember to shut down, and nobody to tell when you are finished with it.
- Anything where the state belongs to one person. A calculator that remembers your inputs, a practice drill, a reading tracker, a form that survives a refresh. Personal storage is exactly this shape and it costs nothing to set up.
- Anything genuinely public. A vote tally, a guestbook, an idea board, a collaborative list. If it would be fine written on a whiteboard in a corridor, an anonymous shared pool is fine, and the anonymity is a feature rather than a gap.
- Anything whose job is to be looked at. A chart, a report, an annotated diff, four layout options side by side. Anthropic's framing is right: it is a capture of work, and this is the work.
- Anything for people you cannot ask to sign up. Customers, a mailing list, a conference room, a forum thread. Asking two hundred strangers to sign in to use a calculator is a mistake, and it is a mistake we would be selling you.
- Anything that should read your own connected tools. A connector-backed artifact pulls live data through the viewer's own connections, which is something a hosted app with its own database simply does not do.
And one advantage that sits above all of those, because it is structural rather than situational: an artifact is the only option in this comparison that can be produced entirely inside a conversation, in seconds, with no deploy step at all. You ask, it exists, you look at it, you ask for a change, it changes. Nothing is provisioned. No second product is involved. No account is created anywhere. That loop is genuinely faster than ours and it will stay faster, because we have a deploy in the middle of ours and they do not.
The rule of thumb that survives all of this: an artifact is superb at a thing to look at or try, and unable to be a thing a group uses together. If what you have is the first, you are already done.
Moving an artifact to a real app, without losing the data
If you have decided to move, the order matters, because the two rules that govern artifact storage work against a careless migration: writes only answer on a published artifact, and unpublishing destroys everything.
Persistent storage is only available for published artifacts. During development and testing, storage operations will not succeed until the artifact is published.
Persistent storage for artifacts, Claude Help Center
- Do it while the artifact is still published. An export control added and tested in the preview pane reads back nothing and will convince you the data is already gone. It is not. It is unreachable until you publish.
- Ask Claude to add an export control. In the same conversation, ask for a button that reads every key out of both personal and shared storage and dumps the result as JSON into a textarea on the page.
- Republish, then open the published link. Not the preview. Click the button and copy the JSON out.
- Accept that personal storage is only yours. Each viewer's personal pool is private to them, so your export sees the whole shared pool and your own personal rows and nothing else. Other people's private data cannot be exported by you, and unpublishing destroys it.
- Keep the source. The artifact's code is in the conversation. Rebuilding from the code is far better than rebuilding from a description.
- Rebuild it, then load the data. Give the agent the artifact code and the exported JSON and ask for the same app with real accounts. The collections it needs are created as part of the deploy.
- Only then decide about unpublishing. There is no rush and no undo, and leaving the old artifact published costs you nothing.
What the two halves look like on the other side, so you know what you are rebuilding into:
| In the artifact | In a Homespun app |
|---|---|
| A key in shared storage holding a JSON array | A collection, with typed fields and filtered queries over them |
| A key in personal storage | The same collection, with rows scoped to the person who created them |
| A name field somebody types in | The signed-in person, recorded on the row without asking |
| An admin flag anyone can set | A role, granted per collection |
| A file you could not store | An attachment on the row |
| Pasting data back into the chat | The agent reading the collection directly |
The practical step is connecting the agent you already use, which takes a couple of minutes and no install: see how to connect Homespun to your AI chat.
What this page is not claiming
We host apps that agents build, so we have an obvious interest in the moment somebody outgrows an artifact. Here is what that interest would tempt us to leave out.
- Signing in is a real cost. Every person who opens a Homespun app has to have an email address and click a link the first time. For ten colleagues that is nothing. For an audience it is a tax, and it is a tax an artifact does not charge.
- There is a deploy step. It is one call the agent makes and you do not have to do anything, and it is still a step an artifact does not have.
- We are free today with no paid plan, which is not the same as safe. A product with no revenue is a product that has not yet proved it can pay for itself. That is a fair thing to weigh against a feature that ships inside a plan you already buy.
- There are no push notifications. Not to a phone, not to a browser. An app can be set up to email its owner and members when a row changes, but nothing pushes, and none of the built-in templates emails anybody until you ask for it.
- There is no export button. Your data is readable in full, at any time, through the API, the command line or your agent. It is not a file you can download in one click, and calling that an export is a stretch.
- There is no rollback. Every deploy is a numbered version and the history is kept, but nothing puts an older one back. You fix things by deploying forward.
- It is not a database you can point anything at. There is no SQL, no connection string, and no third-party tool that can read it. Queries are filters over one collection at a time. If what you want is a real database, an MCP server onto Postgres is the better answer and we say so on the connecting Claude to a database page.
- An artifact does one thing we do not. It reads the viewer's own connected tools live. If that is the requirement, an artifact wins and there is no version of this where it does not.
If any of the Anthropic facts on this page no longer match the help centre, the help centre is right and we would rather fix the page than keep the advantage. Every quote above is linked to the page it came from so you can check it in about a minute.
Questions people ask next
What is the best alternative to Claude Artifacts?
It depends on what stopped working. If you need the page to know who each visitor is, you need a hosted app with sign-in rather than an artifact, because an artifact cannot authenticate anyone. If you only need more room or a file upload, that is the same conclusion. If you need none of that, an artifact is still the best answer and there is nothing to replace.
Should I move my Claude Artifact to a hosted app?
Only if the artifact has become something a group uses together. Short-lived tools, one-person tools and genuinely public tools are better as artifacts, because a published artifact needs no account from anyone and can be produced entirely inside a conversation with no deploy step.
What can a Claude Artifact do that a hosted app cannot?
Two things. It can be created in seconds inside the conversation with nothing to deploy, and it can pull live data through the viewer's own MCP connectors, so two people opening the same page can see different data. A hosted app owns its own data and cannot read yours.
Is Homespun free compared with Claude Artifacts?
Homespun is free today and has no paid plan to buy. Artifact storage is included in the Pro, Max, Team and Enterprise plans, so if you already pay for Claude it costs you nothing extra either. Price is not a real reason to choose between them.
Can I keep my artifact and use a hosted app as well?
Yes, and it is a reasonable setup. Keep artifacts for the charts, calculators and one-off pages they are best at, and move only the thing that several named people fill in every week. Nothing forces the choice to be exclusive.
How do I export data from a Claude Artifact before switching?
Ask Claude to add a control that reads both storage pools and prints the result as JSON, republish the artifact, then open the published link and copy it out. Storage does not answer on an unpublished artifact, so this cannot be done from the preview pane, and unpublishing deletes everything permanently.
Does moving off Claude Artifacts mean I stop using Claude?
No. The agent is still the thing that builds and maintains the app, and on a hosted app it can also read and write the data afterwards, which it cannot do inside an artifact. Moving changes where the app runs, not who builds it.
Primary sources
Every claim about Claude on this page comes from Anthropic's own documentation, quoted rather than summarised so you can check it yourself.