What Is Raw Text?
Raw text is the characters you wrote, delivered without an HTML page, visual formatting, or hidden markup. It reaches the next person, and the next script, in exactly the shape you left it.
Raw text, defined
Raw text is content made only of characters: letters, digits, punctuation, spaces, and line breaks, with no markup, styling, or layout attached. A raw-text URL returns exactly those characters as the body of the HTTP response, labelled with the media type text/plain. Nothing gets rendered, nothing gets wrapped around it, and nothing gets interpreted on the way out.
Several names circle the same idea: plain text, raw output, a .txt file, the raw version of a document. The word raw describes the delivery, meaning unprocessed and exactly as stored. The word plain describes the format. They point at the same bytes, and at the same practical payoff: what you paste is what the reader receives, character for character.
Raw text versus formatted text
A formatted page carries your words plus headings, fonts, buttons, layout rules, and usually a few scripts. All of that is worth having when a person is sitting down to read a website. It starts to cost something the moment the content has to travel somewhere else. Straight quotes turn curly on their way through a rich editor, indentation collapses when a config block gets pasted into a document, and a script has to strip tags before it can reach the one value it came for.
Raw text removes that entire category of surprise, because there is nothing in the response except your content. The version you wrote at 2pm is the version a colleague copies at 6pm and the version a cron job reads at midnight.
Raw text (text/plain) | Web page (text/html) | |
|---|---|---|
| What is sent | The characters you wrote | Your content plus markup, styles, and scripts |
| How a browser treats it | Prints it literally, monospaced | Parses tags, runs scripts, paints a layout |
Tags such as <b> | Stay visible as text | Become formatting |
| Typical size | Only the content | Often several times the content |
| Work needed to use it | Read the body and you are done | Strip markup first, then hope the structure holds |
| Best suited to | Copying, piping, parsing, diffing | Reading and browsing |
What the text/plain media type actually does
A plain-text response carries the HTTP header Content-Type: text/plain; charset=UTF-8. That one header settles how every client behaves. A browser prints the body instead of parsing it, a terminal writes it straight to standard output, and a library hands your program a string rather than a document tree. You get the same result in all three places, which is the quiet advantage: no client-specific rendering to test, and no surprise when the content lands somewhere you did not anticipate.
The header is visible on any PlainRaw snippet:
curl -i https://plainraw.com/raw/your-slug
HTTP/2 200
content-type: text/plain;charset=UTF-8
cache-control: no-store Because the response is not HTML, angle brackets, ampersands, and quotes survive exactly as written, and nothing in the body executes in the reader's browser. That makes raw text a comfortable home for code, configuration, log excerpts, and prompt templates, where a single silently rewritten character is the difference between a working paste and half an hour of hunting.
Character encoding
The charset=UTF-8 half of that header carries as much weight as the media type. UTF-8 covers accented characters, non-Latin scripts, mathematical symbols, and emoji, so text written in any language arrives whole. What plain text cannot carry is presentation. Bold, colour, font size, and images are formatting instructions rather than characters, so they have nowhere to live in a plain-text response.
When a raw-text URL earns its place
- One command instead of a copy-paste ritual: pull notes, configuration, prompts, or small data files with
curlorwget, with no HTML to unwrap first. - Scripts that keep working: read a value straight into a shell variable, a cron job, or a CI step, without a parser that breaks the next time a page redesign ships.
- One source of truth for small config: keep a shared list or a set of feature flags somewhere every machine can reach, and change it in one place rather than in nine checkouts.
- Prompts you stop re-pasting: store a long prompt once and pipe it into whatever tool needs it today.
- Copies that stay faithful: whitespace, punctuation, and line breaks come through untouched, with no editor quietly converting quotes or dashes.
- Code and logs that look identical for everyone: the reader sees your bytes, and nothing runs in their browser.
- Read-only sharing: hand out the public link and keep the edit link to yourself.
How to publish raw text on PlainRaw
- Paste or type your content on the PlainRaw text hosting page.
- Create the snippet. You receive a public raw-text URL and a separate private edit URL.
- Rename the slug from the edit page if you want a link people can read, using 6 to 48 letters, digits, and hyphens, so it becomes
/raw/deploy-notesinstead of a random identifier. - Share the public URL with people, scripts, or tools, and keep the edit URL somewhere you will still be able to find it in six months.
The public link follows the pattern https://plainraw.com/raw/your-slug, and one snippet holds up to 30,000 characters. There is no account to create, no expiry date to track, and no formatting step in between. The edit link is the only route back into a snippet, so a lost edit link means a link that keeps serving the old content forever.
Fetching raw text from the command line
With nothing in the response except content, the URL composes with ordinary Unix tools:
# print it
curl -s https://plainraw.com/raw/release-notes
# pipe it into another program
curl -s https://plainraw.com/raw/prompt | llm chat
# load shell aliases or environment values
source <(curl -s https://plainraw.com/raw/aliases)
# save it as an ordinary .txt file
curl -so notes.txt https://plainraw.com/raw/notes The same URL behaves the same way from application code, whether that is fetch() in JavaScript, requests.get() in Python, or http.Get() in Go, and the response needs no parsing beyond reading the body as a string. Three details are worth knowing before you automate against it:
- Always fresh: raw responses go out with
Cache-Control: no-store, so an edit shows up on the very next request instead of whenever a cache decides to expire. - Browser-accessible: cross-origin requests are allowed, so front-end code can read a snippet directly and you skip building a proxy for it.
- Politely rate limited: reads are capped at 60 requests per minute per IP address, which is generous for polling on an interval and tight for a loop with no sleep in it.
What raw text does not carry
The simplicity is the point, and it comes with edges that are cheaper to learn here than in production:
- No presentation: no bold, headings, colours, tables, or images. Those need a format layered on top of plain text.
- Whitespace counts as content: tabs, trailing spaces, and blank lines are preserved exactly, which is a gift for code and a mild shock if you expected tidying.
- Line endings travel as written: text pasted from Windows tools can carry
CRLFwhere Unix tools expectLF. Most editors absorb both, and strict parsers occasionally do not. - No structure for machines: plain text has no fields. When a program needs to read one specific value reliably, a structured format such as JSON removes the guesswork.
- No version history: an update replaces the content outright. Keeping your own copy, and comparing two versions in the Text Diff tool before you overwrite, costs a few seconds and protects work you cannot get back.
- No access control: anyone holding a public URL can read it.
Raw text, Markdown, and JSON
Markdown, JSON, YAML, CSV, and Mermaid are all plain text underneath. Each adds conventions on top of the same characters, such as # for a heading or braces and quotes for a data structure, so a program can rebuild structure from text. That is why one raw-text host can serve all of them: storage stays plain, and interpretation happens wherever the content is read.
PlainRaw can render several of those formats from the same snippet:
- Write and preview a document in the Markdown editor, then share it rendered at
/markdown/your-slugor as raw source at/raw/your-slug, without maintaining two copies. - Validate, format, and explore structured data in the JSON editor, and catch a broken payload before it reaches whoever is waiting for it.
- Keep diagrams as code in the Mermaid editor and share the rendered chart at
/mermaid/your-slug, so the diagram updates when the text does. - Compare two versions of any text, character by character, in the Text Diff tool.
Privacy, limits, and what not to publish
PlainRaw asks for no account, and a public raw-text URL is still public to anyone holding it. Unlisted is not the same as private: there is no password, no expiry, and no permission model sitting in front of the content. Passwords, permanent credentials, personal data, and anything covered by a policy belong somewhere built for access control.
Snippets stay available as long as the service runs, which makes the raw URL convenient hosting rather than durable storage. A local copy of anything you would be sorry to lose is the cheapest insurance available, and the private edit link is what keeps the content yours to change later.
Frequently asked questions
What does raw text mean?
Raw text means the characters exactly as they were written, delivered without markup, styling, or a surrounding web page. A raw-text URL returns those characters as the HTTP body with the media type text/plain, so a browser, a terminal, or a script receives the content itself instead of a document wrapped around it.
What is the difference between raw text and plain text?
In everyday use they mean the same thing. Plain text describes the format, meaning characters and line breaks with no formatting instructions attached. Raw describes the delivery, meaning unprocessed and exactly as stored. A raw-text URL is a plain-text file served over HTTP.
What is text/plain?
text/plain is the HTTP media type (MIME type) for plain-text responses. It travels in the Content-Type header, usually written as text/plain; charset=UTF-8. It tells the client to treat the body as text instead of parsing it as HTML, so tags stay visible as characters rather than turning into formatting.
How to view the raw text of a web page
Open view-source:https://example.com in a browser, or run curl https://example.com in a terminal. Both show the response body as text. That gives you the page source rather than the page's plain-text content. A raw-text URL skips the HTML layer entirely and returns only the content.
How to upload raw text and get a link
Paste your content on the PlainRaw home page and create the snippet. You get a public raw URL shaped like https://plainraw.com/raw/your-slug that responds with text/plain, plus a separate private edit URL for changing the content later. No account, no email address, no install.
Is raw text the same as a .txt file?
The content is the same kind of data. A .txt file identifies plain text by filename extension on a filesystem, and a raw-text URL identifies it by the Content-Type header over HTTP. Saving a raw-text response to disk gives you an ordinary .txt file.
Does raw text support Unicode and emoji?
Yes. PlainRaw serves raw text as UTF-8, so accented characters, non-Latin scripts, mathematical symbols, and emoji arrive intact. What plain text cannot carry is presentation. Bold, colour, font size, and images are formatting instructions rather than characters, so they have nowhere to live in a plain-text response.
Can I edit raw text after publishing it?
Yes, using the private edit link created alongside the snippet. Anyone holding that link can update the content, and the public raw URL immediately serves the new version. The edit link cannot be recovered, so it is worth storing next to your other important links.
Is a raw-text link private?
No. It is unlisted rather than protected. Anyone holding the URL can read it, and there is no password or permission layer. Passwords, API keys, and personal data belong in a system built for access control, not in a public raw link.
How much text can one raw-text link hold?
A PlainRaw snippet holds up to 30,000 characters, which covers notes, configuration, prompts, small datasets, and most single documents. Anything larger works better split across several snippets or moved to file storage.
Create a raw-text link
Host your plain text for free. Paste the content, create the snippet, and use the raw URL wherever an unformatted text response is what you actually need: in a browser, in a terminal, or from a script.
Last updated: August 14, 2026