smartypants
Python with the SmartyPants
Decision gist · record as of 2026-08-14
Yes, if you need simple, dependency-free text punctuation normalization for web or document output. The permissive BSD License, zero runtime dependencies, and stable codebase make it a low-risk addition. The aging maintenance is not a concern for a mature, narrow-purpose tool, but verify that its punctuation rules match your typographic requirements before committing to it in a pipeline.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low install friction with no runtime dependencies.
- Maintenance is aging—last release was 423 days ago—but the repository remains active with a recent commit on 2025-06-17, suggesting the project is stable rather than abandoned.
License · maintenance · safety
BSD License (permissive) — BSD License (permissive) allows free use, modification, and distribution with minimal restrictions, making it suitable for both open-source and commercial projects.
last release 2025-06-17 (423 days) · last repo commit 2025-06-17 · 44 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 232,590 downloads/mo, #9,062 on PyPI
Alternatives
Verify before relying
import smartypants
text = '"Hello" -- world\'s best'
result = smartypants.smartypants(text)
print(result)- Whether Python 2 support is actively maintained or merely declared in classifiers
- Performance characteristics on large text volumes or streaming input
- Customization options for which punctuation transformations to apply
- Specific HTML entity output format and which punctuation rules are applied
What it is and what it does
smartypants is a Python port of the original SmartyPants text filter. It transforms plain-text punctuation into typographically correct HTML entities—converting straight quotes to curly quotes, replacing hyphens and double-hyphens with en-dashes and em-dashes, and handling other common typographic improvements. It works as both a Python module and a command-line tool, making it useful for preprocessing text before publishing to the web or for document generation pipelines.
The package has no external dependencies and installs with low friction. It is classified as Production/Stable and has been maintained since 2008, though releases are infrequent. The repository remains active, indicating the project is mature and unlikely to break, but the aging maintenance status suggests it is not under active feature development.
Use it for
- Preprocess blog post or article text before publishing to ensure professional typography in HTML output
- Filter user-generated content in web applications to improve readability without requiring manual editing
- Convert plain-text documentation or markdown to typographically correct HTML for static site generators
- Clean up text in content management systems to standardize punctuation across published material
- Process text files from legacy systems or plain-text sources before importing into publishing platforms
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need simple, dependency-free text punctuation normalization for web or document output.
The permissive BSD License, zero runtime dependencies, and stable codebase make it a low-risk addition. The aging maintenance is not a concern for a mature, narrow-purpose tool, but verify that its punctuation rules match your typographic requirements before committing to it in a pipeline.
Install
smartypants on PyPI
Before you install
Low install friction with no runtime dependencies. Maintenance is aging—last release was 423 days ago—but the repository remains active with a recent commit on 2025-06-17, suggesting the project is stable rather than abandoned.
License in practice
BSD License (permissive) allows free use, modification, and distribution with minimal restrictions, making it suitable for both open-source and commercial projects.
Quickstart
import smartypants
text = '"Hello" -- world\'s best'
result = smartypants.smartypants(text)
print(result)
Verify before relying
- Whether Python 2 support is actively maintained or merely declared in classifiers
- Performance characteristics on large text volumes or streaming input
- Customization options for which punctuation transformations to apply
- Specific HTML entity output format and which punctuation rules are applied
Package facts
| License | BSD License permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Aging 423 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 232,590 / month, #9,062 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersIntended Audience :: End Users/DesktopLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: Python :: 2Programming Language :: Python :: 3Topic :: Text Processing :: Filters |
Evidence: smartypants-2.0.2-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “smart quotes and dashes”
- smartypantsConverts plain-text punctuation to typographically correct HTML…
- pylint-quotesA Pylint plugin that enforces consistent use of single vs. double…
- tokenizerTokenizes Icelandic text into words, punctuation, numbers, dates, and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Filters packages
Pygments is a syntax highlighter that colorizes source code and text in over 500 languages and formats, outputting to HTML, LaTeX, RTF, SVG, images, or ANSI terminal sequences.
Install it if you need to display or transform source code.
Converts Markdown text to HTML using a Python implementation of John Gruber's Markdown specification, with support for extensions.
Install it if you need to parse Markdown in Python.
NLTK is a Python library for natural language processing tasks including tokenization, parsing, tagging, and linguistic analysis, with built-in datasets and educational resources.
Install it if you need foundational NLP tools, linguistic datasets, or are learning the field; consider specialized libraries (spaCy, transformers) if you need…
Provides Python utilities for writing pandoc filters that transform document ASTs by reading JSON from stdin, modifying the structure, and writing JSON to stdout.
Converts Unicode text to ASCII-safe representations by transliterating non-ASCII characters to their closest ASCII equivalents, useful for generating URL slugs, legacy system integration, and keyboard-friendly identifiers.
Install it if you need lossy Unicode-to-ASCII conversion and can accept GPLv2+ copyleft terms.
Pymdown Extensions provides a collection of additional extensions for Python Markdown that add syntax support for advanced formatting, including tabbed content, superfences with syntax highlighting, emoji, and other markup enhancements.
Install it if you need markdown features beyond the standard library.
See also markdown2 · tokenizer · fix-busted-json · normality · setuptools-markdown · multimark · match · cmarkgfm · ftfy · recognizers-text