> ## Documentation Index
> Fetch the complete documentation index at: https://docs.37audits.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lorem Ipsun Auditor

> Finds leftover lorem ipsum placeholder text on the page

<Info>
  **SEO Auditor** — scans the visible text of the audited page for lorem ipsum placeholder copy that was never replaced with real content.
</Info>

<CardGroup cols={2}>
  <Card title="Content quality" icon="file-lines">
    Catches draft copy that slipped into production before visitors and search engines see it.
  </Card>

  <Card title="Trust" icon="handshake">
    A page that still reads "lorem ipsum dolor sit amet" looks unfinished and makes the whole site look unmaintained.
  </Card>
</CardGroup>

Designers and page builders fill layouts with lorem ipsum so the design can be reviewed before the real text exists. When a page ships with that filler still in place, visitors see nonsense Latin where product copy should be, and search engines index a page whose content has no value for anyone. This auditor fetches the audited URL, extracts its visible text and looks for the usual placeholder phrases, including the common `lorem ipsun` misspelling and the non-breaking-space and tab variants that copy-paste leaves behind.

## How it works

1. **Fetch** — sends a `GET` request to the audited URL as 37AuditsBot. A blocked request ends the audit with `590`; any other failure (timeout, DNS, TLS, non-2xx answer) ends it with `500`.
2. **Extract** — parses the HTML with jsoup and keeps only the visible text (`doc.text()`), so scripts, styles and attributes are ignored.
3. **Scan** — lower-cases the text and counts every non-overlapping occurrence of `lorem ipsum`, `lorem ipsun`, `lorem ipsum` with a non-breaking space, `lorem ip sum` with a tab, and `dolor sit amet`.
4. **Report** — any occurrence fails the audit (`400`) with one check that lists the total count, each phrase matched with its count, and up to three short snippets of the page text around the first matches.
5. **Success** — when no phrase matches, the audit is `SUCCESS` (`200`) and the message says how many characters of visible text were scanned.

## What it audits

Every row maps to one `checkRule*` method and one `CheckCode`, in the order the auditor runs them. CheckCode suffixes use status ranges: `200` success, `300–399` warning, `400–499` fail, `500–599` error.

| CheckCode | Status | When it fires | Recommendation | Why it matters |
| - | - | - | - | - |
| <a id="37A-LoremIpsunAuditor-400" />`37A-LoremIpsunAuditor-400` | `FAIL` | The visible text of the page contains at least one placeholder phrase (`lorem ipsum`, `lorem ipsun`, a spacing variant or `dolor sit amet`). | Replace the placeholder text `{phrases}` on `{url}` with real copy before publishing the page. | Placeholder text tells visitors and search engines the page is unfinished, which costs trust and can get the page treated as low-quality content. |
| <a id="37A-LoremIpsunAuditor-200" />`37A-LoremIpsunAuditor-200` | `SUCCESS` | All rules passed. Message: No placeholder text found on `{url}` (`{n}` characters of visible text scanned). | — | — |
| <a id="37A-LoremIpsunAuditor-500" />`37A-LoremIpsunAuditor-500` | `ERROR` | The page could not be fetched (timeout, DNS, TLS, or a non-2xx answer other than a block). | Make sure `{url}` answers with HTTP 2xx, then run the audit again. Last error: `{error}`. | — |
| <a id="37A-LoremIpsunAuditor-590" />`37A-LoremIpsunAuditor-590` | `ERROR` | The audited page answered HTTP 403, HTTP 429 or a Cloudflare challenge, so 37AuditsBot was blocked before it could read the page. | Allow 37AuditsBot in your firewall or bot protection: allowlist its user agent, or verify its Web Bot Auth signature. See [https://www.37audits.com/bot](https://www.37audits.com/bot). | While 37AuditsBot is blocked this audit cannot look at the site, so problems on it go unreported. |

## Output documentation

| Status | Description | Test logic |
| - | - | - |
| **SUCCESS** | No placeholder text on the page | None of the placeholder phrases appears in the lower-cased visible text (`200`). |
| **FAIL** | The page still shows placeholder text | At least one phrase matched; the check carries `placeholderCount`, `matches` (phrase → count) and `snippets` (`400`). |
| **ERROR** | The auditor could not read the page | Fetch failure or non-2xx answer (`500`); site blocked 37AuditsBot (`590`). |

## Risks and considerations

### Why placeholder text matters

* Visitors who land on filler copy assume the page, and often the whole site, is abandoned or not ready, and leave.
* Search engines treat pages whose text carries no meaning as thin or low-quality content, which drags down the ranking of the page and can affect the site as a whole.
* Lorem ipsum in a product description, a legal notice or a form label is a sign that a template was published without review, so other parts of that template may also be unfinished.

### What counts as a match

* Only visible text is scanned: HTML comments, `alt` attributes, `<script>` and `<style>` contents and hidden inputs are not read, and text hidden with CSS still counts because jsoup does not evaluate styles.
* Matching is case-insensitive and includes the `lorem ipsun` misspelling and the non-breaking-space and tab variants that appear after copy-pasting from design tools.
* `dolor sit amet` is matched on its own, so a page that quotes the phrase on purpose (for example an article about typography or a type foundry showcase) fails as well. Review the snippets in the finding before acting on it.

### What this auditor does not check

* Only the audited URL is fetched; other pages of the site may still carry placeholder text.
* Text injected by JavaScript after the page loads is not rendered, so filler that only appears in client-side templates is not detected.
* Other placeholder conventions (`TODO`, `Coming soon`, `Insert text here`, image placeholders) are out of scope.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.