A fast, local Bible study tool for your terminal — now a single native Go binary.
Look up verses, explore the Greek, dig into Strong's numbers, and see what the original words really mean — all from your keyboard, with no internet needed after initial setup.
bible "John 3:16"
John 3:16
For God so loved the world, that he gave his only Son, that whoever believes in him should not perish but have eternal life.
— ESV
Bible study shouldn't require a heavy app or an internet connection. This tool is for anyone who lives in a terminal — or anyone who wants a fast, distraction-free way to engage with Scripture in the original languages without jumping between websites.
It's local. It's instant.
Grab the binary from the Releases page or run go install github.com/exergonic/bible@latest (requires Go 1.25+). For the data, run bible update to download the data bundle (everything: ESV, KJV, Greek NT, word pictures), or grab bible-data.tar.gz from the Releases page.
go install github.com/exergonic/bible@latest
bible updatebible looks for its data in this order:
$BIBLE_DATA_DIR— explicit override<exe dir>/data— distribution model (bible.exe + data folder)./data— running from the repo~/.bible/data— the canonical installed location
on a fresh machine: copy the data/ folder next to the binary, or run bible update once to download the full data bundle (~23 mb) into ~/.bible/data.
| translation | source | notes |
|---|---|---|
| esv (2011) | mdbible | with word-level strong's numbers |
| kjv (1769) | kjv-markdown | public domain |
| sbl greek nt | sblgnt | cc by 4.0, scholarly standard |
| word pictures | every promise | robertson, strong's, abbott-smith |
| strong's dictionary | strong (1890/1894, public domain), JSON conversion © openscriptures (cc by-sa) | hebrew + greek definitions |
the binary is self-contained (~12 mb: stdlib for the CLI, Bubble Tea v2
for the TUI). to hand it to someone:
copy the binary + the data/ folder, or just the exe and let them run
bible update — the bundle comes from this project's repo, so there is
nothing else to install.
bible "Rom 8:28"
bible "Ps 23"
bible "1 Cor 13"
bible "2 Peter 1:5-7"
Abbreviations work too — Gen, 1 Cor, Ps, Rev, etc.
bible "John 3:16" --strongs
**John 3:16**\
For(G1063) God(G2316) so(G3779) loved(G25) the world(G2889) , that(G5620) he gave(G1325) his(G846) only(G3439) Son(G5207) ...
Strong's numbers are included for all 31,104 verses — Hebrew (H codes)
for the Old Testament, Greek (G codes) for the New. The codes align with
the ESV wording and display over either translation (--strongs -t kjv).
❯ bible define H430
H430 אֱלֹהִים (ʼĕlôhîym) — el-o-heem'
plural of H433 (אֱלוֹהַּ);
gods in the ordinary sense; but specifically used ... of the supreme God...
KJV: angels, [idiom] exceeding, God (gods) (-dess, -ly), ...
— Strong's dictionary, public domain (JSON conversion © Open Scriptures)
Every number resolves to its entry: lemma in the original language,
transliteration, pronunciation (Hebrew), derivation, definition, and
KJV renderings. In the REPL, d G26 does the same and bare d lists
the current verse's keyed words.
bible search G26 # every verse using agape, in Bible order
bible search "H216 H3588" # an exact compound key
bible search G26 --range "1 john" # scoped like any search
A query that is entirely a Strong's key runs as a concordance instead of
a text search. Matching is literal: H216 matches only tokens keyed
exactly H216, and H216 H3588 only that exact compound.
❯ bible "John 3:16" --picture
John 3:16
────────────────────────────────────────────────────────────
16 For God so loved the world, that he gave his only Son, that whoever believes in him should not perish but have eternal life.
— ESV — The Holy Bible, English Standard Version ©2011 Crossway Bibles
loved (G25) — ἀγαπάω (agapáō) — love
love you decide on.
Abbott-Smith says it means to feel and show esteem and goodwill toward a person. His note calls it love that follows the will, and so love that can be commanded as a duty. He also warns the distinction may not always hold.
world (G2889) — κόσμος (kósmos) — world
a woman putting on her jewellery.
Strong's says this word means orderly arrangement, and so decoration. Abbott-Smith lists order first, then ornament, and points to 1 Peter 3:3, where it means a woman's adornment. Only later did it mean the world, as an ordered whole.
only (G3439) — μονογενής (monogenḗs) — only, only begotten
the only child.
Abbott-Smith builds it from only and kind or born. It pictures an only child, the single one of its kind. He points to only sons and daughters, like the widow's only son. John uses it of Jesus, the only Son.
...
Covers all 4,826 Greek words in the New Testament.
bible -i
> John 3:16
> g
Shows the SBL Greek New Testament in its original language:
John 3:16 (SBL Greek NT)
Οὕτως γὰρ ἠγάπησεν ὁ θεὸς τὸν κόσμον ὥστε τὸν υἱὸν τὸν μονογενῆ ἔδωκεν, ἵνα πᾶς ὁ πιστεύων εἰς αὐτὸν μὴ ἀπόληται ἀλλὰ ἔχῃ ζωὴν αἰώνιον.
Just bible in a real terminal opens a full-screen study desk (vi-style keys, mouse-friendly). It remembers what you're looking at — the verse stays anchored while you stack study aids beneath it:
bible
╭──────────────────────────────────────────────╮
│ 📖 John 3:16 · ESV 12% │
│ 16 For God so loved the world, ... │
│ ── Greek (SBL NT) ────────────────────────── │
│ Οὕτως γὰρ ἠγάπησεν ὁ θεὸς τὸν κόσμον ... │
│ ── Strong's ──────────────────────────────── │
│ For(G1063) God(G2316) so(G3779) loved(G25)...│
╰──────────────────────────────────────────────╯
:look up a reference (: John 3:16,: Ps 23)/search the ESV (/ faith alone,/ covenant range: Paul,/ G26)g/s/l/ptoggle Greek, Strong's, definitions, and word pictures beneath the versetcycle translation (esv → kjv → greek) ·]/[next/prev chapter ·rrandomj/kscroll,d/uhalf page,f/b/spacepage — mouse wheel and clicks work tooqorctrl+cto quit
bible -i (or piped stdin) keeps the line REPL for scripting:
> John 3:16
[shows the verse]
> g
[shows the Greek]
> s
[shows Strong's numbers]
> p
[shows word pictures]
> t kjv
[switches to King James Version]
> search "living water"
[full-text search]
> q
Commands: g / greek, s / strongs, d / define [<code>], p / picture, t esv|kjv, search <q> [range: <scope>], random, help, q.
Native search across all books (no ripgrep needed). Results come back in Bible order:
bible search "faith alone"
bible search "living water" -t kjv
Scope the search with --range — a single book, a span of books, a testament, a literary section, or an author:
bible search "covenant" --range Paul # Romans-Philemon
bible search "Adam" --range Genesis # one book
bible search "king" --range OT # Old Testament
bible search "grace" --range NT # New Testament
bible search "light" --range Isaiah-Malachi # span of books
Authors: Paul (Romans–Philemon), Moses (Genesis–Deuteronomy), David (Psalms), Solomon (Proverbs–Song of Solomon), Peter (1–2 Peter), johannine (John, 1–3 John, Revelation), lucan (Luke, Acts). Sections: pentateuch, history, poetry, prophets, gospels, general epistles. A name that is a book means that book (--range John = the gospel).
In the REPL the same scope works inline:
> search "covenant" range: Paul
cd ~/code/bible
go test ./... # unit + subprocess integration tests
go vet ./...
bash scripts/install.sh # rebuild ~/.local/bin/bible.exe + sync data/ -> ~/.bible/datascripts/download-sblgnt.pyandscripts/convert-wordpictures.pyare maintainer-only tools for refreshing the Greek NT and word-pictures data from upstream;scripts/download-strongs-dictionary.pyrefreshes the Strong's dictionary (run rarely; the converted output is committed, never produced bybible update). After a refresh, regenerate the bundle:tar -czf bible-data.tar.gz -C data esv kjv greek word-pictures.json strongs-dictionary.json— theTestDataBundleIsFreshtest enforces it.