Reddit Text Cleaner avatar

Reddit Text Cleaner

Pricing

from $0.19 / 1,000 texts

Go to Apify Store
Reddit Text Cleaner

Reddit Text Cleaner

Reddit text cleaner: turn Reddit posts into TTS-ready narration scripts. It strips markdown, links and edit stamps, spells out AITA-style shorthand and can tone down swearing. Rows hold the narration text, one segment per sentence, word count, read time and a hook score. $0.20 per 1,000 texts.

Pricing

from $0.19 / 1,000 texts

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

6 hours ago

Last modified

Security

Limited permissions

Share

Reddit text cleaner for a post or a whole batch of them, text a voice can read straight off: markdown gone, link syntax gone, the "Edit: thanks for the gold" trailer gone, and the result split into one segment per sentence.

It runs on fixed rules, not a model, so there is no key to supply and nothing to pay a model provider. That also means it is literal: it does what its lists say and nothing cleverer, and the places where that bites are written out below rather than left for you to find.

InputOne block of text, or an array of texts or post objects
OutputOne row per text: the cleaned narration, its sentences, word and character counts, read time and a hook score
CeilingNo fixed limit, one row per text you send
Account neededNone
Price$0.20 per 1,000 texts on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 25,000

🔍 What Reddit Text Cleaner does

Four passes over each text. It strips markdown and link syntax down to plain words. It expands Reddit shorthand so a voice does not spell it out letter by letter: AITA becomes "Am I the asshole" and MIL becomes "mother-in-law". It handles swearing the way you ask, from leaving it alone to removing it. Then it splits the result into sentences.

Each row also carries the numbers you need to decide whether a story fits a clip: word count, character count, sentence count, an estimated read time at your chosen speed, and a hook score out of 100 worked out from the opening sentence.

The texts array takes post objects as well as plain strings. On each object it uses the first of scriptText, narration, selftext, body or text it finds.

📋 What data you get from each cleaned text

What you getField
The narration text, ready for a voicecleaned
The same text, one sentence per entryttsSegments
What you sent, kept for referenceoriginal
Counts taken on the cleaned textwordCount, charCount, sentenceCount
A read-aloud estimate at your speedreadTimeSeconds
How strong the opening sentence is, 0 to 100hookScore

▶️ How to clean up a Reddit post for a voiceover

  1. Open Reddit Text Cleaner and click Try for free.
  2. Paste one post into Text, or put your batch into Texts (batch).
  3. Pick a Profanity handling mode. soft swaps the commonest swear words for milder ones.
  4. Click Start.
  5. Take cleaned or ttsSegments from the dataset, or read them from the API.

💰 How much does it cost to clean up Reddit posts?

$0.20 per 1,000 texts, which is $0.0002 each on the Free plan. Paid plans pay a little less: $0.198 on Starter, $0.196 on Scale and $0.194 on Business. On the free plan, the $5 Apify gives you each month covers about 25,000 texts.

One text in, one row out, one charge. There is no model behind this and no key to add, so there is no separate bill on top.

📥 What you give it

{
"texts": [
"AITA for leaving? **So** here's the _story_. Check [this](https://x.com).",
"TIFU by replying all. Edit: yes I know."
],
"profanityMode": "soft",
"wpm": 150
}
FieldDefaultWhat it is
textnoneA single block of text. Fine for one post. The form opens with a sample post in it.
textsnoneAn array. Strings, or post objects carrying any of the fields named above.
expandAbbreviationstrueSpells out Reddit and internet shorthand. Read the limits before leaving it on.
profanityModekeepkeep, soft for milder swaps, censor for f***, or remove.
wpm150Narration speed used to estimate read time.

Give it one or the other. A run with both text and texts empty fails rather than finishing with an empty dataset.

📤 What you get back

A real row from a real run:

{
"ok": true,
"original": "AITA for leaving? **So** here's the _story_. Check [this](https://x.com).\n\nEdit: thanks for the awards! TL;DR: I left.",
"cleaned": "Am I the asshole for leaving? So here's the story. Check this.",
"ttsSegments": [
"Am I the asshole for leaving?",
"So here's the story.",
"Check this."
],
"sentenceCount": 3,
"wordCount": 12,
"charCount": 62,
"readTimeSeconds": 4.8,
"hookScore": 64
}
FieldHow to read it
cleanedThe narration text. This is the thing you feed to a voice.
ttsSegmentsThe same text as an array of sentences, for per-line timing or captions.
originalWhat you sent, kept for reference and cut off at 4,000 characters. cleaned is never cut.
wordCount, charCount, sentenceCountMeasured on the cleaned text.
readTimeSecondsWord count against your wpm. Set wpm to 0 and this comes back null.
hookScore0 to 100, scored on the first sentence. Useful for sorting a batch before you pick.

🧾 Reading the output

Every row is a cleaned text and every row is billed. ok is always true, there are no sample rows and no diagnostic rows, and nothing is filtered out silently.

Two things do get dropped, and it is worth knowing which:

What you sentWhat happens
An object in texts with none of the known text fields on itSkipped, no row written
Nothing at all, in either fieldThe run fails instead of writing an empty dataset

If the row count does not match what you sent, the first line is why, or the run reached its own time limit: it keeps the texts it cleaned and writes one TIME_LIMIT notice to the SAMPLE_AND_NOTICES record of the key-value store, never to the dataset.

💡 What people use it for

  • Prepping stories for a faceless video pipeline, where markdown read aloud ruins the take.
  • Taking the commonest swearing out of narration in bulk with soft, instead of editing by hand.
  • Sorting a pile of candidate stories by hookScore and readTimeSeconds before picking the three worth shooting.
  • Turning long posts into per-sentence segments so captions line up with the audio.

From your own stories to a voice-over, in three steps:

  1. Collect the stories you have the right to use, as plain text or as post objects.
  2. Put them into this actor's texts, with profanityMode set to soft.
  3. Send the cleaned values to AI Text-to-Speech Voiceover as texts, with your own OpenAI key.

🚧 What it does not do

  • It does not remove emoji. Invisible zero-width characters go, visible emoji stay exactly where they were. Strip them yourself if your voice reads them out.
  • Abbreviation expansion is blunt. It matches shorthand without caring about case, so "5 mil" comes out as "5 mother-in-law" and a name like Sil becomes "sister-in-law". If your text has ordinary words that look like Reddit shorthand, turn expandAbbreviations off.
  • soft only knows four words. It swaps the f-word, "shit", "asshole" and "bitch" for milder ones and leaves every other swear word as written, so read the result before calling it ad-safe.
  • censor and remove match the start of a word. "Cocktail", "cockpit" and "Dickens" get starred out or deleted along with the swearing.
  • An Edit:, Update:, TL;DR:, ETA: or PS: label cuts the rest. Everything from the first one that starts a sentence to the end of the text is removed, and a dash after the label counts too. That is right for a thank-you trailer and wrong when the story keeps going after it.
  • Sentence splitting is mechanical. An abbreviation with a full stop in it, like "Mr.", starts a new segment.
  • English only, and one fixed word list. No language detection, and you cannot supply your own expansions or swaps.
  • It does not fetch anything. Give it text.
  • It is not an official Reddit tool. Dami's Studio is independent and is not affiliated with or endorsed by Reddit, or by any other company named on this page.

🧭 Which Reddit actor do you need?

If you wantUse
Post text you already have, cleaned up for a voice to readThis one
A post rewritten into a hook and a short-form scriptStory to Script Rewriter
A finished faceless short video from a storyAI Faceless Video Generator
The cleaned text read out loud, as an audio fileAI Text-to-Speech Voiceover

❓ Questions people ask

Does this call an AI model?

No. It is rules and word lists, which is why there is no key field and why the output is the same every time you send the same text.

Why is my read time wrong?

It is word count against wpm, nothing more. Set wpm to the speed your voice actually reads at. A wpm of 0 gives you null rather than a number.

Is original the whole post?

Only up to 4,000 characters. The cleaned field keeps the lot, so use that if length matters.

What does hookScore measure?

How strong the first sentence looks as an opener, scored 0 to 100. It is a sorting aid for a batch, not a verdict.

Can I call it from code or connect it to an AI assistant?

The API tab has code for Python, JavaScript and the CLI. MCP clients like Claude and ChatGPT use https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/reddit-text-cleaner; coding assistants can load our skill file. All three bill your Apify account at the same price.

🆘 If something breaks

Open the Issues tab on the actor page. Paste the text that came out wrong along with the run ID, and that is usually enough to see it.