ditto logo
Code Generation · Code Assistants

ditto

An open-source, deterministic website cloner: point it at any public URL and it returns a componentized Next.js or Vite TypeScript project in minutes, with no LLM guesswork. Free under MIT, with a hosted REST API and MCP server.

Active Free plan Free API available Verified by Guidaio
Overview

What is ditto?

ditto is an open-source website cloner published by ion-design. You point it at a public URL and it returns a self-contained TypeScript application, by default a Next.js App Router project, or Vite React on request. The distinguishing claim is determinism: the compiler is not an LLM page author but a capture-to-code pipeline, so the same frozen capture always yields the same byte-stable application. Its own wording is blunt, saying it does not point a language model at your site and cross its fingers.

The pipeline runs from URL to browser capture, then to a normalized render intermediate representation, deterministic inference, app generation, asset materialization and optional validation. Capture records the DOM, computed styles, layout boxes, source metadata, CSS, fonts, assets, screenshots, interaction states and reproducible motion. Inference then does the work usually left to a developer: repeated DOM becomes components, clean regions become sections, and an editable content model is lifted into a content file. The generated tree carries layout and page modules, a global stylesheet with reset and tokens, a separate stylesheet for keyframes and pseudo-elements, component and section directories, hoisted inline SVG and cloned assets, alongside generated handoff documents. Robots files, sitemaps, llms.txt and JSON-LD are emitted when discoverable.

Cloning here means generating a codebase from a live URL, not running git clone: you need neither a repository nor the target's source code. What is deliberately not reproduced is stated just as clearly, since application logic, authentication, payments, personalization and arbitrary third-party JavaScript are never replayed.

Three entry points share the same engine. The MIT-licensed repository can be self-hosted end to end. A hosted REST API accepts a URL, queues a job and streams progress through capture, generation and verification. A hosted MCP server gives agents six cloning tools, from starting a job to downloading the finished bundle. The homepage positions the tool as the first step for AI app builders, and displays its own scores: determinism 100, fidelity 96, componentization 92, coverage 88. The project is pre-1.0 and free.

What it does

  • Turn any public URL into a runnable Next.js or Vite TypeScript project
  • Extract a live design system: tokens, web fonts, breakpoints, interactions and motion
  • Split repeated DOM into components and clean page regions into sections
  • Emit an editable content model, plus robots, sitemap, llms.txt and JSON-LD when discoverable
  • Clone a whole multi-page site, with a configurable cap on the number of routes
  • Drive cloning from an agent such as Claude or Cursor through the hosted MCP server
  • Self-host the entire capture-to-code pipeline under the MIT licence
Audience

When to use ditto / When not to

A quick filter to help you decide if ditto is the right fit.

When to use ditto

  • AI app builders who want every new project to open on faithful, real code instead of a blank canvas
  • Front-end and full-stack developers migrating or rebuilding an existing site page by page
  • Product designers and design engineers who need a live design system extracted as code: tokens, fonts, breakpoints, motion
  • Growth and CRO teams that rebuild landing pages quickly and want a maintainable starting point rather than throwaway markup
  • Agent builders wiring a cloning tool into Claude, Cursor or their own loop through the hosted MCP server

When not to use ditto

  • Anyone expecting a working application: app logic, authentication, payments, personalization and arbitrary third-party JavaScript are never replayed
  • Non-technical users looking for a no-code visual builder, since everything runs through curl, an MCP client or a terminal
  • Teams that need contractual guarantees, because ditto.site publishes no terms, no privacy policy, no DPA and no retention commitment
  • Organizations that require a support SLA: the project is pre-1.0 and maintained on a best-effort basis through GitHub issues
  • Anyone planning to copy a third-party site they have no right to reproduce, which the responsible-use policy explicitly forbids
Get started

How to use ditto

A typical end-to-end flow, from setup to results.

  1. Mint a free API key on the api-key page, or call the signup endpoint with your email address and follow the verification link you receive
  2. Store the key as a secret in an environment variable rather than pasting it inline, and rotate it from the dashboard whenever needed
  3. Start a clone with a POST to the clones endpoint, passing the target URL and options such as mode, styling, framework, verify and maxRoutes
  4. Follow the job by polling its status, or stream the event feed to watch capture, generation and verification go by in real time
  5. Read the finished result as a file map, stream a single generated file, or download the whole application as one tgz archive
  6. Turn the JSON file map into a project on disk by piping it into the repository's unpack script, since the CLI is not published to npm yet
  7. For agents instead, add the hosted MCP endpoint to your client configuration with a bearer header, then call clone_website and read_clone_files
  8. To run everything locally, clone the repository, install dependencies, add Chromium through Playwright, then launch the clone command on your target URL
  9. Add the serve or open flags to install dependencies and start a development server immediately after the clone finishes
  10. For a queued self-hosted service, bring up the Docker Compose stack with PostgreSQL and MinIO, run the migrations, then start the API and the worker
Quick read

Pros & Cons

Pros

  • Fully deterministic, so two runs on the same capture produce the same code, unlike generators that improvise with a language model
  • MIT-licensed and genuinely open source: the whole pipeline can be read, forked and self-hosted
  • Free with no paid tier at all, and the hosted API key requires nothing more than an email verification
  • Output is componentized, typed and tokenized rather than one unmaintainable file
  • Three entry points cover three real workflows: terminal, REST API, and agent through MCP
  • Security posture is documented and enabled by default, including SSRF validation performed after DNS resolution
  • A published responsible-use policy, which is uncommon for a tool of this kind

Cons

  • No terms of service, no privacy policy, no data processing agreement and no subprocessor list anywhere on ditto.site
  • No published retention period for clones held by the hosted API, only a delete endpoint
  • Pre-1.0 with no service level agreement, and support handled on a best-effort basis through GitHub issues
  • The CLI is not published to npm, so unpacking a result still requires a checked-out repository
  • Application logic, authentication, payments, personalization and third-party JavaScript are not reproduced
  • No interface or processing languages are documented, and both site and documentation are English only
  • Known moderate dependency advisories are acknowledged rather than resolved, through drizzle-kit and through Next
Pricing

Pricing & Plans

ditto is free. The pricing section of the homepage displays a single figure, zero US dollars, and states that the tool is MIT-licensed and fully open source: you may either self-host the whole pipeline or call the hosted API. There is no paid plan, no published currency and no billing unit, so no entry price can be quoted. The only real expense is your own infrastructure if you self-host, where the documentation advises sizing roughly 0.5 to 1 GB of worker memory per concurrent clone to accommodate headless Chromium.

Open source
  • self-host the whole pipeline under the MIT licence
  • free
MCP server
  • hosted endpoint for agents
  • free with the same API key
Special offers — No promotion, discount code or student pricing exists, because the tool is already free for everyone · The MIT licence allows commercial use without royalties · The hosted API key is issued without a credit card
Prices and plans listed above may evolve. Always check the official pricing page before subscribing.
Trust & Privacy

Data, GDPR & hosting

A consolidated view of how ditto handles your data.

GDPR overview

There is no GDPR mention of any kind on ditto.site. The site publishes no privacy policy, no terms, no data processing agreement, no subprocessor list, no Article 27 EU representative and no data protection officer, and its sitemap lists two URLs only. The publisher, Ion Design & Engineering, Inc., does maintain a privacy policy dated 28 July 2026 describing standard contractual clauses for transfers out of the EEA, the United Kingdom and Switzerland, rights of access, rectification, erasure, restriction, portability and objection, and a minimum age of 16. That document, however, limits its scope to ion.design and platform.ion.design and never names ditto.site. For this tool specifically, nothing GDPR-related is published.

Who owns the data?

ditto.site publishes no terms of service and no privacy policy, and its sitemap contains only the homepage and the API-key page, so no contractual clause defines who owns the URLs you submit or the code the compiler returns. The compiler itself is MIT-licensed, copyright ion-design and contributors, which leaves commercial reuse unrestricted. On the hosted API you keep practical control, since DELETE /v1/clones/:id purges a clone and its artifacts on request. Self-hosted, nothing leaves your own disk, S3 bucket, Cloudflare R2 or MinIO. The publisher does maintain a privacy policy, but it scopes itself explicitly to ion.design and platform.ion.design and never names ditto.site.

Reuse rights

No terms of service govern reuse, so nothing contractual restricts what you do with a generated project beyond the MIT licence of the compiler, which permits commercial use without royalty and requires only that the copyright notice be preserved. The real limits are legal and ethical rather than contractual. The published responsible-use policy asks you to clone only content you have the right to inspect, copy, transform and operate on; to respect robots files, rate limits, terms of service, trademarks and copyright; and to keep generated output clearly separated from the original publisher's brand unless you are authorized to represent it. Phishing, impersonation, credential capture, paywall or access-control bypass, and high-volume capture of third-party sites without permission are all explicitly prohibited.

Data retention & training

Retention summary
No retention period is published. ditto.site says nothing about how long the hosted service keeps clone jobs, generated files or captured assets. What is documented is a deletion route: a DELETE call on a clone purges that clone and its artifacts on request. For account data, the signup flow stores only the SHA-256 hash of your API key together with the verified email address, so the key itself is never held in clear. The responsible-use document advises operators of self-hosted deployments to give artifacts an expiration, an access policy or a deletion path appropriate to the data they may contain, but that is guidance to deployers rather than a commitment by the hosted service. The publisher's own policy, which excludes this domain, keeps personal data for as long as necessary.

Hosting summary

No hosting jurisdiction is published for the hosted service. ditto.site names no data centre, country or region, and the publisher's privacy policy, which in any case scopes itself to other domains, states only that the company is based in the United States and relies on standard contractual clauses where transfers out of the European Economic Area, the United Kingdom or Switzerland require them. What can be measured rather than read is that the domain resolves to an address geolocated in the United States on Amazon's network and flagged as an anycast node, which indicates a delivery edge rather than a storage location. That is a network measurement, not a vendor commitment, and it should not be read as a hosting guarantee. Self-hosting removes the question entirely: artifacts go to your own disk, to an S3 bucket whose region you choose, to Cloudflare R2 or to MinIO, with job metadata in a PostgreSQL database you operate yourself.

Watch-outs

Things to keep in mind

Risks and trade-offs to weigh before adopting ditto.

  • Cloning a third-party site can infringe copyright, trademarks or the target's terms of use, and that legal exposure rests entirely on you, not on the publisher
  • No privacy policy, terms or processing agreement exist for ditto.site, and the publisher's own policy explicitly excludes this domain from its scope
  • Nothing is published about how long the hosted service keeps your clones and their artifacts, so only the delete endpoint gives you certainty
  • The URL you submit, and everything the capture pulls from that page, leaves your machine as soon as you use the hosted API rather than self-hosting
  • Faithful cloning makes convincing imitation easy: the responsible-use policy forbids phishing, impersonation and brand confusion, but nothing technically prevents them
  • Self-hosting a fetch-any-URL service is genuinely risky, so SSRF protection must stay on and keys and rate limits must be set before exposing it publicly
  • Starting every project from a copied page can flatten your own design thinking and quietly propagate another team's accessibility and performance mistakes
Setup

Setup & Integrations

Technical difficulty

Low on the hosted path, moderate to high if you self-host. Minting a key takes one email verification, after which a single POST request starts a clone, and adding the MCP server means pasting one configuration block into your client. Running it yourself needs Node 20 or later, a dependency install and a Playwright Chromium install for inline mode, then Docker Compose with PostgreSQL, MinIO and database migrations for the queued service. There is no graphical interface at any point, and unpacking a result still requires a checked-out repository.

Deployment

API

Integrations

Claude Cursor PostgreSQL Amazon S3 Cloudflare R2 MinIO Resend
Company

Behind ditto

Company name
Ion Design & Engineering, Inc.
Founded
05/01/2018
Country of origin
🇺🇸 United States
UBO
Samraaj Bath
UBO country
🇺🇸 United States
Domain registrar country
🇺🇸 United States

Fundraising

Seed round of 1.8 million US dollars announced on 29 April 2025 by the publisher, ion design
Investors named in the announcement: Y Combinator, Founders Inc, Peak Capital, TwentyTwo VC, Lobster Capital, Protocol Labs, and angel investors
The publisher went through the Y Combinator Winter 2024 batch and is based in San Francisco
No funding round is attached to ditto.site itself, which is a project of the publisher rather than a separate company

Social

Official links

Resources

All the official URLs gathered for verification and reference.

FAQ

Frequently asked questions

What does cloning mean here?
It means generating a codebase from a live URL, not running git clone. You need neither an existing repository nor access to the target site's source code: ditto writes a fresh project from what the page renders in a browser.
Does ditto use a language model to write the pages?
No. The compiler is explicitly not an LLM page author but a deterministic capture-to-code pipeline, so the same frozen capture always produces the same byte-stable application.
What kind of code do I get?
A TypeScript project, by default Next.js App Router, or Vite React on request. Styling is Tailwind v4 or plain CSS, and you can generate a single page or a whole multi-page site.
How much does it cost?
Nothing. The homepage prices the tool at zero US dollars, the code is MIT-licensed and fully open source, and the hosted API is free once you have a key.
Is there an API?
Yes. A hosted REST API starts clone jobs, reports their status and returns the generated files or a complete archive. A hosted MCP server exposes six cloning tools to agents such as Claude or Cursor.
How do I get an API key?
Through the api-key page or the signup endpoint. You submit an email address, follow the one-time verification link, and the key is displayed once. Keys can be rotated from the dashboard and only their hash is stored.
What is not reproduced by a clone?
Application logic, authentication, payments, personalization and arbitrary third-party JavaScript are never replayed. You get the rendered interface as maintainable code, not a working backend.
Can I run it on my own machine?
Yes. With Node 20 or later, a Playwright Chromium install and the repository checked out, an inline mode runs without a database. A queued service is also available through Docker Compose with PostgreSQL and MinIO.
Does ditto publish a privacy policy or a DPA?
No. ditto.site publishes neither terms, privacy policy, data processing agreement nor subprocessor list, and the publisher's own privacy policy explicitly covers other domains rather than this one.
Am I allowed to clone any website?
Only where you have the right to inspect, copy, transform and operate on the content. The responsible-use policy forbids phishing, impersonation, credential capture, access-control bypass and high-volume capture of third-party sites without permission.
Conclusion

Should you pick ditto?

ditto does one thing and does it with unusual rigour: it turns a rendered web page into a real, componentized codebase you could plausibly maintain. The bet on determinism is what sets it apart from the growing family of generators that hand a screenshot to a language model and hope. Here the same capture always produces the same output, components come from repeated DOM rather than guesswork, and the design system, fonts, motion and breakpoints are extracted rather than approximated.

The distribution choices are equally sober. The entire pipeline is MIT-licensed and self-hostable, the hosted REST API costs nothing, and the MCP server makes the same engine available to a coding agent in a few lines of configuration. Nothing is gated, nothing requires a credit card, and the security notes on running a fetch-any-URL service publicly are more candid than most commercial documentation.

The reservations are real and worth stating plainly. ditto.site publishes no terms of service, no privacy policy, no processing agreement and no retention rule for the clones its hosted API keeps; the publisher's own policy explicitly covers other domains. The project is pre-1.0, support is best-effort, and the packaging is unfinished, since the command-line tool has not reached npm. And the legal weight of cloning a third-party site rests entirely on the person who runs the job, a point the responsible-use document makes without softening it.

For developers, product designers and growth teams comfortable in a terminal, the trial costs nothing and the output is genuinely usable. For anyone who needs a contract, a retention commitment or a support guarantee before touching a service, this is not yet that product.