Product documentation

Faithful rewriting, without the black box.

UndetectableText reshapes stiff drafts into natural, direct writing while protecting the facts, names, numbers, citations, URLs, and qualifications in the source.

Quick start

From draft to rewrite

01

Open a draft

Paste nonempty text or import a supported plain-text draft. The editor shows the live word and character count.

02

Choose the shape

Select a tone, target length, and language. Keeping the source language is the default.

03

Review the result

Check every material claim. Copy the rewrite or download it as a plain-text file.

Existing drafts

Import a real document without rewriting it

On first use choose Import .txt draft. Later, the same action remains in Rewrite settings. UndetectableText accepts one .txt file encoded as valid UTF-8 whose trimmed text is nonempty. It reads and validates the complete file before changing browser state; unsupported types, invalid UTF-8 and empty files are rejected without retaining a partial draft or calling the rewrite API.

The accepted text is copied byte-for-byte into Original draft and retained only in this browser with its source filename. It becomes the source for the next ordinary Rewrite action; import itself does not generate or alter prose. Previously imported drafts remain selectable. Importing the same filename and identical text is unchanged and reopens that copy. A different text with the same filename is a conflict: the stored draft is preserved and the new file is refused, with an instruction to rename it when both should be kept.

Forget imported copy removes the selected browser copy. Rewrite requests and results still use Cache-Control: no-store and are not added to the draft store.

CLI

Install from source, then choose a command

The canonical CLI reference documents source installation, local draft storage, and every command exposed by the undetectabletext executable. Each command page follows the actual parser and links back to the browser import guide above.

Controls

Supported settings

ControlAccepted values
Tonenatural, professional, conversational, confident, concise
Lengthshorter, similar, expanded
Languagesource language, English, Polish, Spanish, French, German
InputNonempty text

“Expanded” may improve transitions or add explanation only when the source supports it. It must not invent facts.

API reference

Rewrite endpoint

The writing studio calls the JSON endpoint below. Invalid request JSON, a non-object body, empty text or unsupported settings return HTTP 400, with the JSON read cause when parsing fails. A non-JSON content type returns HTTP 415. Input refusals do not call the model or record first-rewrite success.

POST https://app.undetectabletext.com/api/rewrite
Content-Type: application/json

{
  "text": "Your nonempty source text",
  "tone": "natural",
  "length": "similar",
  "language": "auto"
}

A successful response contains the rewritten text, inputWords, and outputWords. Responses use Cache-Control: no-store; drafts explicitly imported through the studio remain only in that browser until removed.

The application imposes no input or output character ceiling. The model service reports a draft it cannot process. Upstream failures return HTTP 502 with the rewrite cause rather than an empty successful result.

The product repository's node tests/rewrite/real.mjs journey uses the actual CLI and deployed rewrite endpoint. It requires UNDETECTABLETEXT_TEST_ALLOW_REWRITE=true, UNDETECTABLETEXT_TEST_SUCCESS_EXIT, UNDETECTABLETEXT_TEST_SOURCE_REVISION, UNDETECTABLETEXT_TEST_API_URL, UNDETECTABLETEXT_TEST_DEPLOYMENT_EVIDENCE and UNDETECTABLETEXT_TEST_FIXTURE. The fixture declares text, tone, length, language and exact requiredFacts already present in the text.

The journey imports its own draft, verifies input refusals without first-success cookies, performs a real Brama-backed rewrite, checks the declared material facts and unchanged retained source, then removes the draft and confirms its absence. Revision, release evidence, file hashes, CLI exits, HTTP responses and cleanup errors are retained under .next/real-tests/rewrite/. Release evidence must identify the tested deployment; the API does not attest its revision itself. This does not qualify browser rendering or general editorial faithfulness beyond the declared facts.

Integrity and limits

What the product does—and does not—promise

Meaning comes first

The rewrite instruction preserves factual claims, proper nouns, numbers, quotations, citations, URLs, and material qualifications.

No detector guarantee

No writing tool can guarantee a detector outcome. UndetectableText focuses on natural voice, clarity, and faithful editing.

Review remains yours

Generated edits can be wrong. Verify the result against the source before publishing or relying on it.