How to read a subreddit's AutoMod wiki: YAML literacy for posters
AutoMod is a YAML file you can usually read before you post. Here is the check-key cheat sheet, the modifier syntax, and how to predict a removal in 30 seconds.
Every Reddit marketer who has been removed without a reason has been removed by a YAML file. AutoMod is not a black box; it is a config the mod team typed into a wiki page. Reddit's Help docs describe it as "a configurable bot that performs automated tasks based on rules defined by mods," and the bot reads the same wiki path on every subreddit: /r/\<sub>/wiki/config/automoderator. If the page is public, the rules are too. Signals runs an aged Reddit account marketplace plus an editorial network for AI brand mentions across Reddit, Quora, Product Hunt, and Threads, and the cheapest debugging tool we use is also the most ignored: read the file before you post.
Existing content teaches moderators how to write AutoMod rules. This post teaches the other side of the table: how a poster reads a rule file and predicts whether a draft will survive. The format is YAML, the syntax is small, and the patterns repeat. After thirty minutes with the cheat sheet below, the average operator can scan an unfamiliar subreddit's config and call removal causes the way an experienced mod can.
Where does a subreddit's AutoMod config actually live?
Every subreddit's AutoMod file lives at the same URL pattern: https://www.reddit.com/r/\<subreddit>/wiki/config/automoderator. According to the Reddit Mods Help docs, this is the only path AutoMod reads, and the file becomes live within seconds of a save. Mods choose whether the wiki page is public, subreddit_only, or mods_only. In practice, mid-size operator-relevant subreddits often leave it public, while large default subs and trust-walled communities lock it down.
Try the URL directly. If the page renders, copy the YAML into a text editor with syntax highlighting and you have the full filter logic. If you see "this page is restricted," the rules are private and you need the probe-post workaround at the bottom of this article. Either way, start with the URL. We have found public configs on roughly half of the business-and-creator subs we audit at Signals, and the half that are public usually include the strictest filters on the platform.
The 30-second cheat sheet for reading any rule
Every AutoMod file follows the same skeleton. Rules are separated by a line containing exactly ---. Inside each rule, indented under spaces (never tabs), there are two halves: the conditions that must match and the action AutoMod takes when they do. A minimal rule looks like this.
---
type: submission
domain: ["bit.ly", "tinyurl.com"]
action: remove
action_reason: "URL shortener"Read it left to right: when a submission's link domain is bit.ly or tinyurl.com, AutoMod removes it and stamps the mod log with the reason. Comments above the rule using # are documentation for the mod team. Indentation is four spaces by convention, but two-space configs still parse. A multi-line comment or modmail body uses | on its own line and indents the text below. That is the entire syntax surface. Everything else is which keys go inside and which modifiers go in the parentheses.
What check keys decide if your post passes?
Checks are the part of the rule that asks a question about your post or account. The community-canonical AutoModerator full documentation groups them into roughly four families: post checks, author checks, behavior checks, and meta checks. Most marketer-killer rules use two or three checks from the first two groups stacked into one condition block, and AutoMod requires all listed checks to match unless satisfy_any_threshold: true is set.
| Check key | What it actually does |
|---|---|
type | Filters by submission, comment, or any. Often the first key in a rule. |
title, body, body+title | Matches text. Pairs with modifiers like (includes-word) or (regex). |
domain, url | Matches a link's host or full URL. Catches shorteners and self-promotion. |
flair_text, flair_css_class | Matches post flair. Used for category-locked subs. |
author: {comment_karma} | Author sub-key. Accepts < 100, > 500, >= 1000. |
author: {account_age} | Author sub-key. Accepts 7 days, < 30 days, etc. |
author: {has_verified_email} | true or false. Many subs require verified email implicitly via this check. |
author: {contributor_quality} | Filters by CQS tier: lowest, low, moderate, high, highest. |
reports | Counts user reports on a post or comment. |
body_longer_than, body_shorter_than | Character-count gates. r/SaaS uses these to kill thin posts. |
is_edited | true triggers when a post has been edited after submission. |
satisfy_any_threshold | When true, any one check matching triggers the rule instead of all. |
The check keys you will see most often in business and creator subreddits are author: {comment_karma, account_age, contributor_quality, has_verified_email} stacked together. That single block catches new accounts, low-karma accounts, low-CQS accounts, and unverified accounts in one rule. It is the rule that removes most fresh-account promotional posts the moment they are submitted.
What action keys determine what happens to you?
Once a rule's checks all match, the action key tells AutoMod what to do. The official action values, per the reddit-archive source code, are five: approve, remove, spam, filter, and report. Each behaves differently in the mod queue, and the difference matters when you appeal.
removedeletes the post from the public view. It still appears in the author's own feed, which is the source of the classic "I posted it but nobody upvoted" confusion.filterremoves the post but sends it to the modqueue for human review. A human will eventually look. Politely wait, do not resubmit.spamis functionallyremoveplus a hit on Reddit's site-wide spam classifier. Three or four of these across subreddits will shadowban an account.reportleaves the post live but adds a flag for mods to inspect. Often paired withreports: 2or a borderline keyword.approveoverrides earlier filtering. Used by mods to whitelist trusted authors or flairs.
Supporting keys ride along: action_reason stamps the mod log, comment posts a public AutoMod reply, modmail sends a private note to the mod team, set_flair changes the post's flair, and set_locked closes comments. None of these change whether you were removed; they change what the mods and the world see afterwards.
What modifiers change how matches work?
Modifiers go in parentheses after a key and change how the match runs. The four that show up in nearly every operator-relevant config are (includes), (includes-word), (regex), and (full-exact). Misreading them is how marketers mistakenly assume their post is fine.
(includes)matches any substring.body (includes): "free"matchesfreedom,affordable, andi offer free shipping. This is why naïve keyword rules feel arbitrary.(includes-word)matches whole words only.body (includes-word): "free"matchesfree shippingbut notfreedom. This is the safer mod default and the one most updated configs use.(regex)runs a full regular expression. Common in domain-shortener filters and email-detection rules.(full-exact)requires the entire field to match exactly. Mostly used onflair_text.(case-sensitive)can be combined with the above. By default everything is case-insensitive.
A ~ prefix means "not," so title (~includes-word): "review" matches everything that does not contain the word review. Pair this with author: {comment_karma: "< 100"} and the rule becomes "remove any post from a sub-100-karma account unless it is a review thread."
What does contributor_quality silently do to new accounts?
The most consequential check key added to AutoMod in the past two years is contributor_quality. Per Reddit's CQS documentation, every account is placed into one of five tiers (Lowest, Low, Moderate, High, Highest) based on past actions, network signals, and engagement quality. Mods can write a single rule that silently filters anything below a tier: author: {contributor_quality: "< moderate"} action: remove. The post never reaches the new feed. The author sees it as if it posted normally.
This is the rule that kills most karma-passed accounts. An account with 500 karma can still test at Low tier if the karma was farmed on free-karma subs or the network fingerprint looks like a VPN. CQS replaces karma as the primary trust signal in any sub that has migrated. Before paying the aged-account premium, check the account's CQS tier at r/WhatismyCQS. A Moderate tier clears most operator-relevant subs; Low or Lowest will trip every modern config.
How do you read a real rule and predict the outcome?
Take a representative business-sub rule. It looks like this in the wild.
---
type: submission
author:
comment_karma: "< 100"
account_age: "< 30 days"
contributor_quality: "< moderate"
satisfy_any_threshold: true
action: filter
action_reason: "new account gate"
modmail: |
A new account submission was filtered. Author has
{{author}} (karma {{author_comment_karma}}, age
{{author_account_age}}, CQS {{author_contributor_quality}}).Translate it in your head. The rule fires on a submission when the author has fewer than 100 comment karma, OR is younger than 30 days, OR sits below Moderate CQS, any one of the three triggers the filter because of satisfy_any_threshold: true. The post does not get removed; it goes to the modqueue for human review with a templated modmail. If your account fails any single one of those checks, your post never reaches the new feed. The fix is to clear all three checks before you draft the post, not to refine the post copy. For the full diagnostic flow when a post has already disappeared, our AutoModerator removal decoder covers the .json endpoint and the removed_by_category field that names the exact cause.
What do you do when the wiki page is private?
Many large subs lock the config to mods only, and subreddit_only access still requires you to be a subscriber, which AutoMod itself may filter on day one. When the file is private, fall back to inference. Pick a clean test account at a known karma tier, write the blandest possible on-topic post, submit it, and check the .json endpoint within a minute. If the response shows "removed_by_category": "automod_filtered", the rule is keyed to your account profile. If it shows "automod_removed", it is keyed to the post content. Repeat the test from a higher-karma account to isolate which gate triggered.
The other workaround is reading what the bot says. AutoMod can post automatic replies via the comment key, and many subs leave one breadcrumb visible: a removal explanation in a stickied AutoMod comment. Search a target sub's Reveddit feed for removed threads from the past week. AutoMod's public removal comments usually quote the rule name, which is enough to reverse-engineer the trigger. Combined with the cheat sheet above, two or three probe posts will reveal the gate stack of any sub whose config is private.
Frequently asked questions
Is the AutoMod wiki always at the same URL on every subreddit?
Yes. The path is always /r/\<subreddit>/wiki/config/automoderator. AutoMod reads only that path. Whether the page is visible to you depends on the mod team's setting: public, subreddit-only, or mods-only.
Can I run a subreddit's AutoMod rules against my own post before submitting?
There is no official sandbox. The closest tools are static YAML linters and Reddit-archive's automoderator.py, which is the original source. In practice, operators read the config manually and check their draft against the rule stack. Probe posts from a test account are the only end-to-end test.
Why does my post show in my profile but not in the subreddit feed?
Reddit's removal UX shows authors the post as if it is still live. The post is almost certainly removed by AutoMod with action: remove or action: filter. Run the post URL in an incognito window or append .json to the URL and check removed_by_category to confirm.
Does `contributor_quality` override karma checks in AutoMod?
No. They are independent. A rule can require both comment_karma: "> 100" and contributor_quality: ">= moderate". If either check fails, the rule does not match unless satisfy_any_threshold: true is set. Most modern operator-targeting rules stack both.
If a subreddit's wiki is private, can I still get the rules from a third party?
Sometimes. Aggregator sites occasionally cache historical wiki content, and Reveddit shows removal patterns. Neither is reliable. The pragmatic substitute is probe-posting from a known-clean account and reading what comes back through the .json endpoint.
Do AutoMod rules update in real time when the wiki is edited?
Yes. Per Reddit Mods Help, AutoMod re-reads the config within seconds of a save. There is no deployment delay, which is also why mods diff the wiki edit history when the bot behaves unexpectedly.
Are there subreddits where AutoMod is effectively the entire mod team?
Many. Per published mod surveys, AutoMod handles the majority of removals on large default subs and most business and creator communities. Human moderators step in primarily for appeals and edge cases. Reading the config is therefore reading the moderator.
:::