HTML to plain text

Turn HTML code or a web page into clean, readable text. Paragraphs, headings, lists, line breaks and tables keep their shape, scripts and hidden elements are removed, and you can export Markdown too.

  • Structure kept, not just tags stripped
  • Main content without menus and footers
  • Pasted HTML stays in your browser
Ready

Plain text

Paste HTML to start

Characters —
Lines —
Paragraphs
—
Links
Reading
—
  1. Source
    Waiting for input
    Pasted HTML or URL
  2. Parsed
    —
    By the browser's HTML parser
  3. Removed
    —
    Scripts, styles, hidden
  4. Text
    —
    Structure kept

Plain text

Options

Changes apply at once.

Text

The converted text appears here.

What was kept and removed

Counted in the part that was converted.

Nothing converted yet.

Heading outline

The h1 to h6 headings, in order.

Nothing converted yet.

Fair-use limit for page URLs: 30 per hour and 200 per day for each visitor IP address, pages up to 3 MB. Pasted HTML has no limit.

Why convert HTML to text

The text of a page is what people read and what search engines and other tools analyse. Getting it out cleanly takes more than deleting tags.

A parser, not a regex

Deleting everything between < and > breaks on scripts, comments and attributes that contain >. The browser's HTML parser reads the code the way a browser does.

Structure matters

Without line breaks, a heading, a list and a table run into one sentence. Blocks become paragraphs, list items get bullets and cells are separated by tabs.

Main content

Menus, footers and sidebars repeat on every page. Main content keeps the main or article part, which is what word counts and summaries need.

The HTML, not the screen

The tool reads the HTML as sent. It does not run JavaScript or stylesheets, so text added by scripts is missing and text hidden by CSS classes stays in.

How each element is converted

What happens to the common HTML elements, in plain text and in Markdown.

ElementPlain textResult
<script>, <style>, <svg>, <iframe>, <template> Removed with everything inside Nothing
hidden, aria-hidden="true", style="display:none" Removed Nothing
<p>, <div>, <section>, <h1>–<h6> Separated by a blank line Paragraphs; # headings in Markdown
<br> A line break A new line inside the paragraph
<ul>, <ol>, <li> One line per item • item, or 1. 2. 3. for numbered lists
<table>, <tr>, <td> One row per line Cells separated by tabs; a table in Markdown
<pre>, <code> Spaces and line breaks kept Code blocks in Markdown
<a href> Text, optionally with the URL text (https://…) or [text](url)
<img alt> Skipped, or its alt text [Image: alt] or ![alt](src)
&   ’ Decoded by the parser & a space ’

How to use this tool

From HTML or a URL to clean text.

  1. Paste HTML or enter a URL

    Paste code, open an .html file, or switch to Page URL to fetch a live page.

  2. Pick the options

    Plain text or Markdown, whole page or main content, and how to treat links and images.

  3. Check the result

    Read the text, the counts and the heading outline. Changes apply at once.

  4. Copy or download

    Copy the text, or download it as a .txt or .md file.

What this tool does, and what it doesn't

A plain list, so you know exactly what to expect.

This tool does

  • Parse HTML like a browser does
  • Keep paragraphs, lists and tables
  • Remove scripts, styles and hidden parts
  • Export plain text or Markdown
  • Fetch public pages, following redirects
  • Count words and outline headings

This tool does not

  • Run JavaScript on the page
  • Read CSS to find hidden text
  • Get past logins or paywalls
  • Read text inside images or PDFs
  • Upload the HTML you paste
  • Store URLs or converted text

Where your data goes

Pasted HTML and opened files are converted in your browser and sent nowhere. For a page URL, our server fetches the page and returns its HTML to your browser; small results are kept for 10 minutes. Fair-use counters use a hashed IP address, as described in our privacy policy.

How browsers turn HTML into text

Why your results might look unexpected

The six situations people run into most, and what each one means.

Text from the page is missing

It is added by JavaScript after loading. Paste the HTML from your browser's developer tools instead.

Menus and footers in the text

Switch to Main content to keep only the main or article part of the page.

Hidden text still appears

It is hidden by a CSS class, which the tool cannot read. Only inline styles and hidden attributes are seen.

é instead of é

The page declares the wrong character set. URL mode converts to UTF-8; for files, save them as UTF-8.

A login or "access denied" page

The URL is protected or blocks our server. Copy the HTML from your own browser instead.

Code lost its indentation

Indentation is kept only inside <pre>. Code in other elements is normal text.

Questions about HTML to text

How does the converter turn HTML into plain text?

It reads the HTML with the browser's own parser, the same way a browser builds a page, and walks through the elements. Scripts, styles, SVG, iframes and hidden elements are dropped. Paragraphs and headings are separated by a blank line, list items get bullets or numbers, line breaks are kept, and table cells are separated by tabs, so the text keeps its structure instead of running together.

What is the difference between whole page and main content?

Whole page converts everything in the body, including menus, headers, footers and sidebars. Main content looks for the page's main element, an article or role="main", and leaves out nav, header, footer and aside, which is usually what you want for word counts, quotes or feeding text into another tool. If a page marks up nothing as main, the whole body is used.

Can I keep links and image descriptions?

Yes. Links can be kept as text only, or as text followed by the URL in brackets. Images can be skipped or written as their alt text. In Markdown output, links become [text](url) and images ![alt](src), and relative URLs are made absolute when the HTML came from a page URL.

Why is some text missing from a page I converted by URL?

The tool reads the HTML the server sends and does not run JavaScript. Text that a script adds after the page loads, such as in many React or Vue apps, comments and some product listings, is not in that HTML. Pages behind a login, a paywall or bot protection may also return a different page. In that case, open the page in your browser, copy its HTML from the developer tools and paste it here.

Does it remove hidden text?

It removes elements with the hidden attribute, aria-hidden="true", an inline style of display:none or visibility:hidden, and template and noscript content. It cannot read stylesheets, so text hidden by a CSS class is still included, as it is in the HTML itself.

How are the words and reading time counted?

Words are runs of letters or digits separated by spaces or punctuation, so "e-mail" counts as one and numbers count as words. Reading time assumes 238 words per minute, the average silent reading speed for non-fiction found in a 2019 review of 190 studies, and is only a rough guide.

Is my HTML sent to your server?

Pasted HTML and opened files are converted in your browser and are not sent anywhere. For a URL, our server fetches that page and returns its HTML to your browser, where the conversion runs; small results are kept for 10 minutes. Fair-use counters use a hashed version of your IP address, as described in our privacy policy.