Mac users: If you just want the ready-to-use macOS installer (right-click integration, no terminal required), head to Meaningful PDF Names — macOS DMG Release.
meaningful-pdf-names
Offline-friendly CLI to turn your messy paper filenames into compact, keyword-rich names based on the PDF's first page.
Example:
final_v3_really_final.pdf → urban-resilience-transport-inequality-policy-a9f.pdf
Features
- Uses the first 2 pages by default (title, authors, abstract, introduction) for better context
- Configurable page count with
-pflag (e.g.,-p 4for 4 pages) - Up to 5 meaningful keywords per file
- Adds a 3-character [a-z0-9] suffix to avoid collisions
- Works fully offline with
pypdf+pdfminer.sixfallback - Optional: use a small local Hugging Face summarizer
(
sshleifer/distilbart-cnn-12-6) viatransformers+torch
Prerequisites
- Python 3.9+ installed on your system
- pip (Python package manager) - usually comes with Python
Quick Install
From PyPI (Recommended)
pip install meaningful-pdf-names
Quick Start Guide
For Mac Users
- Install the package (see above)
- Navigate to your PDF folder:
- Open Finder and go to the folder containing your PDFs
- Right-click on the folder and select "New Terminal at Folder"
- This opens Terminal directly in that folder
- Run the command:
mpn .
For Linux Users
- Install the package (see above)
- Navigate to your PDF folder:
cd /path/to/your/pdf/folder
- Run the command:
mpn .
For Any Folder Location
If you want to rename PDFs in a different folder without navigating there:
mpn /full/path/to/your/pdf/folder
Usage Examples
Basic usage (current folder):
mpn .
Specific folder:
mpn ~/Downloads/research_papers
mpn /Users/username/Documents/PDFs
Single PDF file:
mpn document.pdf
mpn ~/Downloads/paper.pdf
Multiple PDF files:
mpn paper1.pdf paper2.pdf paper3.pdf
mpn ~/Downloads/*.pdf
Mixed files and folders:
mpn . document.pdf ~/Downloads/research_papers
Dry run (preview changes without renaming):
mpn . --dry-run
mpn document.pdf --dry-run
Quiet mode (minimal output):
mpn . --quiet
Custom page count (read more pages for better context):
mpn . -p 4 # Read first 4 pages
mpn . -p 10 # Read up to 10 pages (or all if PDF has fewer)
mpn document.pdf -p 3 # Read first 3 pages of specific file
What It Does
- Scans all PDF files in the specified folder
- Extracts text from first pages (
-p, default 2) with quality checks - Fallback order:
pypdf->pdfminer.six-> PDF metadata -> filename stem - Identifies meaningful keywords from titles, authors, abstracts
- Generates clean, readable filenames like:
climate-change-urban-planning-sustainability-a9f.pdfmachine-learning-neural-networks-research-4x2.pdfhealthcare-policy-digital-transformation-b7c.pdf
Why Not Existing Tools?
Other tools often:
- Depend on OpenAI / web APIs (requires internet, API keys)
- Require DOIs or external metadata (not always available)
- Use long
Author - Title - Yearpatterns (hard to read)
meaningful-pdf-names is:
- Local-only (no API keys, no network required)
- Fast (first-page only extraction)
- Slug-based: short, grep- and git-friendly names
License
MIT
Metadata
Release files for meaningful-pdf-names 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| meaningful_pdf_names-0.2.2.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| meaningful_pdf_names-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.5 kB
Release files / meaningful_pdf_names-0.2.2.tar.gz
| Download URL | meaningful_pdf_names-0.2.2.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99070fdfcd275f14e988ee2428c9580644e697f6bace97b289a157ff8eefe457
|
|
BLAKE2b-256 checksum How to use checksums |
82b0bbb0b7e56e4301e6726c78b215ab62f4f196bd0aedf2d5d66425b325c38a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2026.
Transparency logRelease files / meaningful_pdf_names-0.2.2-py3-none-any.whl
| Download URL | meaningful_pdf_names-0.2.2-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77c793a8bc8232d16e9dcf45c290689a81b2d1c2ac41eeab3ab03b2a027130ca
|
|
BLAKE2b-256 checksum How to use checksums |
5002fb389d9b6e6b6e33c8446035bcbe00477c3ce91c8be62e8796207a5abe2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2026.
Transparency log