A small Node.js utility to detect and fix empty or missing verse ranges in JSON Bibles that follow the JSON Bible Format.
This tool now supports both standard JSON and FreeShow Bible (.fsb) formats.
⚠️ This script makes best-effort assumptions based on verse numbering and empty text. Always recheck the results against the original/reference Bible.
Download and install Node.js:
👉 https://nodejs.org/en/download
Verify installation:
node -v-
Download or clone this repository
-
Place
fixJsonBible.mjsanywhere you want (for example, your project root)
No npm install required — this script uses only built-in Node.js modules.
The script expects the following structure outside the project root:
your-folder/
├─ JSONBible-Fixer-for-FreeShow/
│ ├─ fixJsonBible.js
│ └─ logs/ (auto-created log files)
├─ Converted/
│ ├─ Bible1.json
│ ├─ Bible2.fsb
│ └─ ...
├─ Fixed/ (auto-created output)
- Converted/ → input JSON or FSB Bibles
- Fixed/ → output (only Bibles that actually needed fixing)
- logs/ → detailed logs (if --log is used)
Basic usage:
node fixJsonBible.mjsShow the help message:
node fixJsonBible.mjs [--help or -h]Dry run (analyze only, no files written):
node fixJsonBible.mjs --dry-runWrite logs to a timestamped file in ./logs/:
node fixJsonBible.mjs --logCombine flags:
node fixJsonBible.mjs --dry-run --log- ✅ Empty verse text: Identifies verses with no content.
- ✅ Missing verse numbers: Detects gaps in numbering (e.g., 22 → 25).
- ✅ Range Merging: Merges gaps into the previous verse using endNumber.
This program only makes assumptions.
👉 Always double-check the affected verses using the original/reference Bible to ensure the verse ranges (created via endNumber) are correct for your specific translation.
I honestly built this after many trials while trying to fix tagalog JSON Bibles for FreeShow.
I’m not 100% sure why it works in every case — but it worked for my use case, and I’m sharing it for anyone who might need it too.
If it helps you: awesome.
If it doesn’t: at least you know where the verses broke 😄