A free tool that automatically cleans up the lyrics in your ProPresenter 7 song library — and keeps them clean — so your screens look consistent every week. No more random ALL-CAPS lines, "your" where it should be "Your" (and vice-versa), American spellings when you want British (and vice versa), stray Capitals In The Middle of lines, or twelve different ways of writing the same chorus.
Run it once, review changes before writing, or let it run quietly in the background on your Mac or Windows PC. In always-on mode, when you add or edit a song and close ProPresenter, it tidies the lyrics within a few seconds — backing up every file first.
💝 This is a gift to the worship-tech community. It's free, open, and there's nothing to buy. Use it, share it, change it.
You'll need:
- A Mac or Windows PC.
- ProPresenter 7, with your songs in a library called Songs (the default).
- Python 3. macOS can use the system
python3; Windows users can install Python 3 from python.org or use the Python launcher (py). - A few minutes for setup. The easiest path is to let your AI coding assistant run the Terminal commands for you; the copy/paste Terminal steps are still included below if you prefer to do it yourself.
Windows note: This was built and tested on a Mac. Windows support has been added by an AI-assisted coding pass and covered with tests that simulate Windows discovery, process detection, and Task Scheduler setup. I have not personally tested it on a real Windows ProPresenter install yet, but the AI-assisted build says it should run there too. If Windows setup hits a bug, opening this folder in an AI IDE and pasting the error back in is a good first move — it can read the repo and help patch the Windows setup path.
That's it. No accounts, no internet connection required, no paid software for the core tool. (There's an optional AI step later that needs a local coding assistant that can read this folder and run commands — but the main tool works great without it.)
1. The deterministic corrector (free, local, no AI). Run it as a one-time cleanup, review each proposed song before writing, or install a tiny background helper that watches your Songs library. Whenever a song is new or edited, it fixes everything that can be fixed reliably by rules — spelling, capitalization of God's names, stray capitals, smart quotes, and so on. It only writes when ProPresenter is closed, so it never fights with you while you're editing.
2. The optional nightly AI pass. Some choices need judgment, not rules — like whether "your" refers to God ("I worship You") or to a person ("give Him your praise"). The corrector flags those instead of guessing. If you set up the optional AI step with a local AI coding assistant, it reviews the flagged songs and makes those context-dependent calls. You can skip this entirely and still get 90% of the benefit.
Every change — by either layer — is written to a plain-text log
(EDIT-LOG.md) and every file is backed up first.
These run automatically and are considered "safe" (rule-based):
| Category | Example |
|---|---|
| ALL-CAPS lines → sentence case | HOLY IS THE LORD → Holy is the Lord |
| First word of each line capitalized | and we worship → And we worship |
| Stray capitals inside a word | evEry → every |
| Stray capitals on small words mid-line | salvation In The night → salvation in the night |
| American spelling | Saviour, colour, honour → Savior, color, honor |
| Common typos | alright → all right, recieve → receive |
| Straight → smart quotes & apostrophes | 'Cause, "Holy" → ’Cause, “Holy” |
| God's names & titles always capitalized | jesus, lord, king of kings, holy spirit → Jesus, Lord, King of Kings, Holy Spirit |
| Attributes always lowercase | Grace, Glory, Mercy, the Cross → grace, glory, mercy, the cross |
| Tidy spacing | double spaces, trailing spaces, extra blank lines removed |
| No orphan words | the last two words of every lyric line are joined with a non-breaking space, so if a line overflows the slide width, the last word wraps down with the word before it instead of alone on its own line. A line that's already a single word (e.g. the second line of a two-line slide) is left alone. |
| Song title cleaned | the name shown in ProPresenter's library is set to the file's name (so no more Untitled or typo'd titles) |
Left for the optional AI pass (flagged, never guessed):
- Pronouns that may be God or a person — You/Your, He/Him/His, Me/My (capital only when it refers to / is spoken by God or Jesus).
- "the One Who…" when it means God.
- Words that are sometimes a title for Jesus and sometimes a normal word —
king, spirit, word, name, father, son, rock, shepherd, light, life, way, truth, etc. - A leading single quote that might be an opening quote instead of an apostrophe.
Heads-up — these are opinionated defaults. They reflect a common, clean worship-display style, but they may not match yours exactly (for instance, capitalizing the first word of every line). See Make it your own to change any of them before you run it.
- Every changed file is backed up first, timestamped, to
~/Documents/ProPresenter Backups/lyric-corrector/(outside your library). - Files are edited in place — no new files appear in your Songs folder.
- After each edit the file is re-checked; if anything looks off, the change is thrown away and the original kept.
- It is fail-safe while ProPresenter is open — it waits until you close it.
- It only ever touches the Songs library — never sermons, announcements, playlists, media, themes, or any other library.
- Songs with unusual characters it can't safely re-encode are skipped, not mangled.
You can undo everything (see Undo / restore).
Takes about 10–15 minutes. The easiest path is to open this folder in your AI coding assistant and let it walk you through the setup. The no-AI copy/paste method is right below it.
Before you start, choose two things:
- How it should run: one-time cleanup only, or always-on background cleanup.
- How cautious the first pass should be: preview a draft first, review every changed song one-by-one, or update the live Songs library after a normal preview.
The safest first run is: full draft preview → one-by-one review → optional always-on helper.
Use any local AI coding assistant that can read this folder and run Terminal commands on the computer that has your ProPresenter library. Good options include Claude Code, Codex, Cursor, Gemini, etc.
This is especially helpful for Windows right now: the Windows code path is implemented and test-covered, but it has not yet been field-tested on an actual Windows ProPresenter machine. If setup hits an edge case, an AI IDE can inspect the error, the local paths, and the repo code together.
- Download/unzip (or clone) this folder somewhere you'll remember, e.g. your Documents folder.
- Open this folder in your AI IDE or coding assistant.
- Quit ProPresenter before any live update.
- Paste this prompt:
Please set up this ProPresenter lyric corrector on this computer.
Read AGENTS.md and README.md first. Do not add dependencies. Only touch the
ProPresenter Songs library.
First ask me to choose:
- one-time cleanup only, or always-on background cleanup
- full draft preview first, one-by-one review, or update live after a normal
preview
Then follow my choice using these commands:
1. Confirm this folder contains pro7_lyric_corrector.py.
2. Use `python3` on macOS, or `py` on Windows. If `py` is unavailable on
Windows, try `python`.
3. Run: python3 pro7_lyric_corrector.py discover
4. For a normal no-write preview, run:
python3 pro7_lyric_corrector.py calibrate
5. For a full no-write draft of every proposed change, run:
python3 pro7_lyric_corrector.py calibrate --all --per-file 0
6. For one-by-one review before writing anything, run:
python3 pro7_lyric_corrector.py review
7. For direct one-time live cleanup after I confirm, run:
python3 pro7_lyric_corrector.py apply-once
8. Only if I choose always-on cleanup, install and start the helper:
python3 pro7_lyric_corrector.py install-agent
python3 pro7_lyric_corrector.py start
python3 pro7_lyric_corrector.py status
If ProPresenter is open, stop and tell me to quit it before writing. If I choose
always-on cleanup on macOS, remind me to grant Full Disk Access to
/usr/bin/python3. On Windows, remind me that install-agent creates a Task
Scheduler task.
- On macOS, when the assistant reaches the Full Disk Access step, do that part yourself:
open System Settings → Privacy & Security → Full Disk Access, click +,
press ⌘⇧G, type
/usr/bin/python3, press Return, and Add it. Make sure its switch is on. This is only needed for the always-on background helper. Windows does not use Full Disk Access; the helper is installed with Task Scheduler.
If you choose one-time cleanup, you're done after apply-once or review
finishes. If you choose always-on cleanup, you're set once status says the
helper is running. Everyday rhythm: edit songs in ProPresenter → close
ProPresenter → within a few seconds your new/edited songs are corrected and
backed up.
Prefer to do it yourself? Copy/paste each command below.
The tool backs up every file it changes, but for total peace of mind you can
make your own copy of your library first: go to your ProPresenter Libraries
folder, right-click the Songs folder, and compress/copy it somewhere safe.
The default location is usually ~/Documents/ProPresenter/Libraries/ on macOS
or %USERPROFILE%\Documents\ProPresenter\Libraries\ on Windows.
Also: quit ProPresenter before the one-time cleanup.
Download/unzip (or clone) this folder somewhere you'll remember, e.g. your
Documents folder. The whole thing is one folder containing
pro7_lyric_corrector.py and a pro7corrector/ folder.
On macOS, open the Terminal app. On Windows, open PowerShell. Type
cd (with a space), then drag the tool's folder onto the Terminal/PowerShell
window and press Return/Enter. Your prompt should now show the folder name.
The commands below use python3. On Windows, replace python3 with py (or
python if that is how Python is installed).
Check it works (this only reads, changes nothing):
python3 pro7_lyric_corrector.py discoverOn macOS, if the system asks to install developer tools, click Install and wait, then run the command again. On Windows, if
py/pythonis not found, install Python 3 and reopen PowerShell.
You should see it find your ProPresenter and your Songs library.
Start with a normal preview summary and sample diffs:
python3 pro7_lyric_corrector.py calibrateTo see a full draft of every proposed change before anything is written:
python3 pro7_lyric_corrector.py calibrate --all --per-file 0Read through the preview. If something looks wrong for your style, see Make it your own first.
Option A — Review each changed song before writing anything. This shows every proposed diff, lets you approve or skip each song, then asks one final time before it writes approved files to the live Songs library:
python3 pro7_lyric_corrector.py reviewThis is the safest path for an existing library.
Option B — Run a one-time cleanup now. With ProPresenter closed, correct the whole library once (every changed file is backed up):
python3 pro7_lyric_corrector.py apply-onceIt prints each song it changed. Open ProPresenter and spot-check a few. Don't like a result? See Undo / restore.
Option C — Stop after preview.
If you only wanted to see what the tool would do, stop after calibrate. No
files were changed.
This installs a small background helper that keeps new/edited songs clean going forward. Skip this step if you only want one-time cleanup.
python3 pro7_lyric_corrector.py install-agent
python3 pro7_lyric_corrector.py start
python3 pro7_lyric_corrector.py statusstatus should say it's running.
On macOS, your library lives in ~/Documents, which macOS protects. The
background helper can't touch it until you allow it once:
- Open System Settings → Privacy & Security → Full Disk Access.
- Click +, press ⌘⇧G, type
/usr/bin/python3, press Return, and Add it. - Make sure its switch is on.
On Windows, install-agent creates a Task Scheduler task named
Pro7LyricCorrector; no Full Disk Access step is needed.
That's it — the helper now corrects songs automatically. Everyday rhythm: edit songs in ProPresenter → close ProPresenter → within a few seconds your new/edited songs are corrected (and backed up). Reopen any time.
Prefer not to install the background helper? You can instead run the watcher by hand in a Terminal/PowerShell window whenever you want it active:
python3 pro7_lyric_corrector.py watch(leave the window open; press Ctrl-C to stop).
This adds the judgment calls the basic tool leaves alone (e.g. lowercasing "your" when it's the listener's, capitalizing "You" when it's God). Totally optional. It needs an AI coding assistant that can read local files and run Terminal commands, and it must run on the computer that has your library (it needs local file access). Examples include Claude Code, Codex, Gemini CLI, Qwen Code, Cursor, Copilot coding agent, Cline, Roo, Continue, Kiro, Junie, Devin, Windsurf, and Hermes-compatible workflows. Availability and pricing vary by tool.
The instructions the AI follows live in docs/ROUTINE.md in this folder —
it's the single source of truth, so you never have to update the assistant
itself. This repo also includes common starter files (AGENTS.md, CLAUDE.md,
GEMINI.md, QWEN.md, HERMES.md, Copilot/Cursor/Cline/Roo/Continue rules,
and more) so most AI IDEs can find the same project guidance automatically.
See docs/AI_IDE_SUPPORT.md for the full list.
A. Install your assistant and sign in (follow their docs):
- Choose any assistant that can access this folder and run Terminal commands.
- If it supports repository instruction files, it should pick up the matching starter file automatically.
B. Open this tool's folder in the assistant (point it at the folder from Step 1).
C. Run the pass on demand — paste this prompt to the assistant:
You are my worship-lyric assistant. Read the file docs/ROUTINE.md in this
project and follow it exactly, top to bottom. Re-read it every time (it is the
source of truth and may have changed). Only ever touch songs in the
ProPresenter "Songs" library. When you're done, stop.
It will pull the list of flagged songs, make the context-dependent fixes, apply them through the same safe pipeline (backup → verify → log), and report what it changed. (Quit ProPresenter first, or it will safely defer.)
D. (Advanced) Schedule it nightly. Some assistants can run on a schedule, or you can use your operating system's scheduler to launch the assistant with the prompt above (e.g. nightly at 3 AM). The pass is cheap to run repeatedly because it only looks at songs whose lyrics changed since the last run — usually just the few you edited that week. If nothing changed, it does nothing.
New to scheduling? Skip it. Just paste the prompt from step C whenever you've added a batch of songs and want the polish.
Every changed file has a timestamped backup in your Documents folder under
ProPresenter Backups/lyric-corrector/.
- Restore one song to its pre-change version:
(Use a filename from the backups folder.)
python3 pro7_lyric_corrector.py --restore "20260630-125719__Amazing Grace.pro.bak" - Restore by hand: copy the
.pro.bakfile over the original.proin yourDocuments/ProPresenter/Libraries/Songs/folder (and remove the.bak). - See exactly what changed and why: open
EDIT-LOG.mdin this folder — it's a running, plain-text history of every edit.
To turn the background helper off:
python3 pro7_lyric_corrector.py stop
The defaults are opinionated. To change them, open pro7corrector/rules.py:
- Each rule category has an on/off switch in the
Confignear the top:allcaps,spelling,smart_punct,midline(lowercasing common words),typos,divine(capitalizing God's names),intercaps(mid-word capitals),fix_title. Set any toFalseto disable it. - The lists that decide casing are right there too and easy to read:
ALWAYS_CAP(always capitalized),COMMON_WORDS/FUNCTION_WORDS(always lowercase mid-line),AMBIGUOUS_DIVINE(left for the AI pass),PHRASE_RULES(multi-word titles like King of Kings). - The most opinionated rule is capitalizing the first word of every line. To
change it, edit
_first_word_capinrules.py.
After any change, re-run python3 pro7_lyric_corrector.py calibrate to preview,
then apply-once. There are tests: python3 tests/run_tests.py.
- "It's not correcting my songs automatically." The background helper only
writes when ProPresenter is closed. Close it and wait ~5 seconds. Also
confirm Step 6 is complete and
statusshows running. - "
python3/pysays command not found." On macOS, click Install if prompted for developer tools, then retry. On Windows, install Python 3 and reopen PowerShell. - "Windows setup failed." Windows support was added and tested through the
AI-assisted build, but has not yet been field-tested on a real Windows
ProPresenter install. Open this folder in an AI IDE, paste the exact error,
and ask it to read
README.mdandAGENTS.mdbefore fixing the setup path. - "It didn't touch some songs." It only edits the Songs library and skips non-song files and songs with characters it can't safely re-encode (it logs why).
- "A capitalization looks wrong." The context-dependent ones are judgment calls handled by the optional AI pass — and even that isn't perfect. Fix it in ProPresenter; the tool won't undo your manual choice for those flagged words.
- Touch any library other than Songs.
- Change wording, reorder or add/remove lines, or alter meaning — it only adjusts capitalization, spelling, punctuation, and spacing.
- Create new files in your library or upload anything anywhere. It's entirely local and offline (the optional AI step is the only thing that uses a network, and only if you set it up).
This was built for one church's volunteer team and is shared freely with the wider ProPresenter community — not for sale, not for profit, no strings. If it blesses your Sunday, pass it on. Improvements and fixes are welcome.
Pure Python 3 standard library — zero dependencies, nothing to install beyond Python itself.
Developers: see AGENTS.md and docs/ARCHITECTURE.md (how the .pro format
is parsed and edited safely). AI IDE starter files are listed in
docs/AI_IDE_SUPPORT.md.