Humanizer "Too Much Bold Text" Rule (Pattern 15): A Complete Guide to Removing Decorative Bold Formatting
Humanizer's Pattern 15 flags excessive bold formatting as "Bold as decoration" and automatically strips markup from words or labels that lack functional meaning, converting labeled lists to plain prose while preserving bold inside code blocks.
The "Too much bold text" rule—formally documented as Pattern 19 ("Bold as decoration") in the Humanizer source code—targets a common readability anti-pattern: using bold text purely for visual emphasis rather than semantic purpose. This guide explains exactly how the rule works, what triggers it, and how to apply it correctly using the Humanizer library.
What Triggers the "Too Much Bold Text" Rule
According to the Humanizer codebase in SKILL.md (lines 77-80), the rule activates in two specific scenarios:
- Inline decorative bold — Multiple bold phrases in close proximity where bold serves no navigational or semantic function
- Labeled list abuse — Lists where each item consists only of a bold heading followed by a colon and description
The core principle: bold must add meaning, not merely decoration.
How the Rule Works in Practice
Inline Bold Removal
When Humanizer detects consecutive bold phrases that don't aid scanning or navigation, it removes all ** wrappers and rewrites the sentence.
from humanizer import Humanizer
h = Humanizer()
text = """It blends **OKRs (Objectives and Key Results)**, **KPIs (Key Performance Indicators)**, and visual strategy tools such as the **Business Model Canvas (BMC)** and **Balanced Scorecard (BSC)**."""
print(h.apply(text))
# Output: It blends OKRs (Objectives and Key Results), KPIs (Key Performance Indicators), and visual strategy tools such as the Business Model Canvas (BMC) and Balanced Scorecard (BSC).
Labeled List to Prose Conversion
Bold-heavy lists with colon-separated labels get flattened into flowing sentences.
from humanizer import Humanizer
h = Humanizer()
text = """
- **User Experience:** The user experience has been significantly improved with a new interface.
- **Performance:** Performance has been enhanced through optimized algorithms.
- **Security:** Security has been strengthened with end-to-end encryption.
"""
print(h.apply(text))
# Output: The user experience has been significantly improved with a new interface, performance has been enhanced through optimized algorithms, and security has been strengthened with end-to-end encryption.
Critical Exception: Code Blocks Are Preserved
The "Too much bold text" rule never modifies bold formatting inside:
- Fenced code blocks (
```) - Inline code spans (
`) - Command-line snippets
- File paths or URLs
This preservation ensures that syntax highlighting and intentional emphasis in technical content remain intact.
Source Files Defining Pattern 15/19
| File | Purpose | Location |
|---|---|---|
SKILL.md |
Rule definition for "Bold as decoration" | Lines 77-80 |
README.md |
Integration and versioning context | Root directory |
agents/openai.yaml |
Agent-specific prompt packaging | agents/ subdirectory |
The canonical definition resides in SKILL.md under the heading ### 19. Bold as decoration, which establishes the enforcement logic that the Humanizer engine applies via its apply() method.
Implementation in Agent Configurations
The rule is packaged for different LLM backends through configuration files. In agents/openai.yaml, Pattern 19 is embedded in the default system prompt, ensuring consistent behavior across OpenAI-compatible endpoints without requiring per-request parameters.
Summary
- Pattern 15/19 targets bold used purely for visual decoration, not semantic emphasis
- Remediation removes
**markup and rewrites labeled lists as prose sentences - Preservation keeps bold intact inside code blocks, inline code, paths, and URLs
- Entry point is
Humanizer.apply(text)as implemented in the core library - Authority rests in
SKILL.mdlines 77-80 of the blader/humanizer repository
Frequently Asked Questions
What is the difference between Pattern 15 and Pattern 19 in Humanizer?
Pattern 15 and Pattern 19 refer to the same rule. The raw analysis uses "Pattern 15" colloquially while the authoritative source in SKILL.md labels it "Pattern 19" under the section "### 19. Bold as decoration." The discrepancy appears to be a numbering convention difference between internal references and the documented schema.
Does Humanizer remove all bold formatting automatically?
No. Humanizer only removes bold when it determines the formatting serves no functional purpose. Bold that aids navigation, distinguishes technical terms in running text, or appears inside code contexts remains untouched. The apply() method evaluates semantic necessity before stripping markup.
How can I preserve specific bold text that Humanizer incorrectly flags?
The current implementation in SKILL.md does not expose granular override parameters. To preserve specific bold phrases, wrap them in inline code backticks (`**term**`) or place them within fenced code blocks—both contexts are explicitly excluded from Pattern 19 processing according to the rule specification.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →