BibleMultiConverter
Converter written in Java to convert between different Bible program formats
Install / Use
/learn @schierlm/BibleMultiConverterREADME
BibleMultiConverter
Converter written in Java to convert between different Bible program formats
Copyright (c) 2007-2025 Michael Schierl Licensed unter MIT License; for details, see the LICENSE file.
Usage
If you clone from Git or download a source zip, you will need a Java JDK 8 or above (tested up to 11), and Apache Maven 3.5 or above, to build. Just run "mvn package" and you will find a suitable distribution .zip file in the TARGET folder.
If you download a precompiled .zip file, you will need a Java Runtime Environment 8 or above, available from java.com. Just run
java -jar BibleMultiConverter.jar
on the command line for usage information. Each module has its own help, which can be shown by using the "help" module.
Documentation
The documentation is currently a bit lacking. Try the commands, or look at the source, or open an issue if anything is unclear.
Supported Formats
BibleMultiConverter supports four custom formats, which are loss-less (support all features supported by the BibleMultiConverter framework) and are supported both for import and for export:
- Compact: Designed for creating small text files that compress well
- Diffable: Designed to make comparing different bibles easier
- RoundtripTaggedText: Similar to Diffable, but optimized for automated editing using regular expression, at the expense of legibility
- RoundtripXML: Useful for interchange of modules with converters written in other programming languages (that prefer XML binding to plaintext parsing)
Note that the Diffable format got new features in v0.0.3, v0.0.8 and v0.0.9, which are backwards compatible but not forwards compatible. Use the OldDiffable format to export Bibles in v0.0.9 so that v0.0.8 or older versions are guaranteed to be able to read them.
In addition, there are other formats that can preserve all features supported by the BibleMultiConverter framework, and can therefore used for exchanging or editing modules without loss of data:
- RoundtripHTML: HTML format that can be read back if desired (originally intended for publishing on free website hosters, but with the advent of free file hosters this feature is pretty much obsolete).
- RoundtripStructuredHTML: Similar to above, but converts the structure (i. e. paragraphs, headlines, tables) as toplevel elements, and not the verses. Often results in better HTML when converting from Paratext formats.
- RoundtripODT: Export as an editable .odt (OpenOffice/LibreOffice Document Text), which can be edited in LibreOffice (tested with LibreOffice 6.0) and later imported again. Large bibles can take a minute or so to open in LibreOffice 6, which is quite some improvement since LibreOffice 5.x sometimes took more than 15 minutes. Note that all formatting is exported as named Paragraph or Text styles, and other individual formatting will be ignored when importing.
In addition, the following other formats are supported, with varying accuracy:
- HaggaiXML: import and export
- OSIS: import and export (only a very limited subset of OSIS standard)
- ZefaniaXML: import and export (There are two import filters and three export filters available that focus on different subsets/features of this quite diverse format)
- ZefDic (Zefania's dictionary format): import and export (two export filters)
- TheWord: import and export
- PalmBible+: import and export (for the XML-like format used to build PDBs)
- UnboundBible: Import and export
- MobiPocket: export only
- Volksbibel2000: export only
- OnLineBible: export only
- BrowserBible: export only
- Quick Bible: export only
- SWORD modules: import only (see below for details)
- Original Languages with tagging: import only
- MyBible.Zone (more bibles): import and export (in a special SQLite edition)
- Bible Analyzer: export only (text export for bibles and dictionaries, SQLite export for bibles)
- Accordance: import and export
- BibleWorks: import and export
- Equipd Bible: export only
- SoftProjector: import and export
- Paratext:
- USFM 2: import and export
- USX 2/USX 3: import and export
- USFX: import and export
- UBXF: import (and conversion to "normal" USFM)
- SwordSearcher (Forge): export only
- MySword: import and export
- Obsidian: export only
- Beblia XML: import and export
- Laridian Book Builder: export only
- e-Sword: export only
In combination with third party tools, other export formats are available:
- In combination with LibreOffice 4.4 to 7.5, it is possible to export bibles for Logos Bible Software (see below for details)
- In combination with the E-Sword ToolTipTool NT v2.51, it is possible to export bibles for E-Sword versions older than 11 (see below for details)
While the focus of this tool is for bible texts, there is also limited support for (Strong) dictionaries.
The StrongDictionary import filter downloads a public domain Strong dictionary and compiles it for exporting as HTML, MobiPocket, Logos or ZefDic (currently no other exporters support dictionaries).
The StrongConcordance import filter takes a Strong dictionary and a Bible and augments the dictionary with concordance information (i. e. links that link back to all verses that contain this word in that particular Bible).
Three utility exporters are also available: Validate validates the syntax of a bible file, and StrippedDiffable exports a Diffable, but removes certain features (like prologs, footnotes, headlines, etc.) In case you want to rename or remove certain books automatically, have a look at the Diffable importer, which provides options for that. HeatMapHTML can generate heat maps (or verse statistics) which show how often a certain feature (e. g. a footnote, a divine name, or the word "Jesus") appears in the Bible and where exactly.
AugmentGrammar can analyze the use of grammar information (Strongs, morphology, source indices) in one or more bible modules and use this information to augment other modules (e.g. modules that contain Strongs but no morphology). It can also be used to dump grammar information as a CSV file to analyze it elsewhere, or generate source indices in Original Language modules by counting grammar info tags.
The ValidateXML tool can be used to validate an input XML file against a XSD schema.
The schema can be given as a file, as an URL or one of the embedded schema names OSIS,
ZefaniaXML, HaggaiXML, RoundtripXML, USFX, USX or ZefDic. This is useful as in case of an
invalid XML input file, the schema usually provides better error messages than what is
provided by the import modules.
The SQLiteDump tool (part of the SQLite edition) can dump SQLite databases in a diffable text format; useful for diagnosing problems with Bible programs that use SQLite based formats or for importing MyBible.Zone bibles.
The ParatextConverter tool can be used to convert between USFM/USFX/USX formats without converting to BibleMultiConverter's internal format first, or to remove tagged OT/NT/Deuterocanonical content from such a file. It can also be used to convert from/to ParatextDump (which is a diffable plain text dump of the internal Paratext structure and useful for comparing different Paratext formats), *ParatextCompact (a more compact representation intended for archival which will remain forward compatible) and ParatextVPL (which is a different diffable format that looks more like VPL, but uses Paratext tags) formats. In combination with the ParatextStripped format, various features of the file can be stripped or it can be made compatible to an older USFM version. And ParatextValidate format can be used to validate inconsistencies of the paratext format, like unclosed/unopened milestones or paragraph markers without text or unexpected extra text.
The MyBibleZoneListDownloader tool (part of SQLite edition) can be used to download the list of available MyBible.Zone modules from the module registry (that is also queried by the Android app) and create a HTML file with download links and (JavaScript) filters. This is needed as the website apparently does not include all modules available in the app.
Planned formats
EPUB export is planned (but not high priority at the moment).
If you want to see any other formats, feel free to open an issue (or a pull request :-D).
New FormattedText Mod
