12 January 2022

Web version of bibref

All scripture is given by inspiration of God,
and is profitable for doctrine, for reproof,
for correction, for instruction in righteousness:
That the man of God may be perfect,
throughly furnished unto all good works.

— Paul the Apostle (II Timothy 3:16-17)

You may, of course, have a different opinion on this. But let me try to convince you – even if I cannot prove my statement unambiguously.

On this website I want to share a project I've been working on for a while which aims at collecting arguments for the inspired nature of the Bible (and doing this I use mostly mechanical tools). I am going to describe this project in some further entries in this blog, but for now I just provide a web version of my command line software tool by which data supporting the statement expressed in the Bible verses above can be collected.

The project's code name is bibref. It is written in C++ and based on the Sword library that provides several Bible texts for free of charge. I've implemented a couple of text researching tools on this framework, and now I would like to present some results of my work. I plan to show the results in a format that is easy to verify for anyone – you can reproduce all the research on the ancient texts in your web browser, after typing some simple commands in the search bar in the window on this page.


You can start here a Bible research tool, and all the required data is available offline in your browser now. The underlying technology is based on WebAssembly, a quite new way of delivering complex applications embedded in a website. Luckily, the produced software can run even on a smartphone. (You can just try to load this page on a smartphone. It will work.)

How much data is saved in your browser in an offline method? The WebAssembly code requires about 1.5 MB of memory. It has been produced by Emscripten, a wonderful toolchain to translate C++ code into HTML, JavaScript and WebAssembly. On the other hand, you need some additional memory for the Bible texts. For this showcase I decided to use the King James Version (KJV), and two Greek texts, LXX (the Septuagint) and SBLGNT (a version of the Greek New Testament). They occupy a bit less than 10 MB. But this is highly configurable – one can install a similar system with different Bible texts as well.

I have already prepared a command line for the first attempt: just click in the pink input box and press ENTER to have a try. You will be able to get the first sentence of the KJV Bible. You may want to try out some other commands, too. To get the first sentence of the Septuagint you can use the command lookup LXX Genesis 1:1, and to get the first sentence of the Greek New Testament please type (or copy-paste) lookup SBLGNT Matthew 1:1.

Let us compare these two texts! They come from different books, and they have no real literal correspondence. To store the first text in clipboard 1 you need the command text1 εν αρχη εποιησεν ο θεος τον ουρανον και την γην, and to store the second text in clipboard 2 you need to type text2 Βιβλος γενεσεως Ιησου χριστου υιου Δαυιδ υιου Αβρααμ. To compare them mechanically you have two options. You can either use the Jaccard distance for the two texts by issuing the command jaccard12 or an optional comparison with the command compare12. Both of them will give you a number near 0.8 – this simply means that these two texts substantially differ.

Of course, we are interested in finding matching texts! So, as for the next entry, I am going to give an example how you can find some real matches – in some sense, by using mechanical tools!

Acknowledgment. My friend László Gyöngyösi kindly helped me improve the first version of this blog entry.


Entries on topic internal references in the Bible

  1. Web version of bibref (12 January 2022)
  2. Order in chaos (17 January 2022)
  3. Reproducibility and imperfection (20 January 2022)
  4. A student of Gamaliel's (23 January 2022)
  5. Non-literal matches in the Romans (26 January 2022)
  6. Literal matches: minimal uniquity and maximal extension (31 January 2022)
  7. Literal matches: the minunique and getrefs algorithms (1 February 2022)
  8. Non-literal matches: Jaccard distance (2 February 2022)
  9. Non-literal matches in the Romans: Part 2 (3 February 2022)
  10. A summary on the Romans (5 February 2022)
  11. The Psalms (6 February 2022)
  12. The Psalms: Part 2 (7 February 2022)
  13. A classification of structure diagrams (15 February 2022)
  14. Isaiah: Part 1 (19 February 2022)
  15. Isaiah: Part 2 (26 February 2022)
  16. Isaiah: Part 3 (2 March 2022)
  17. Isaiah: Part 4 (7 March 2022)
  18. Isaiah: Part 5 (15 March 2022)
  19. Isaiah: Part 6 (23 March 2022)
  20. Isaiah: Part 7 (30 March 2022)
  21. A summary (7 April 2022)
  22. On the Wuppertal Project, concerning Matthew (17 July 2022)
  23. Matthew, a summary (25 July 2022)
  24. Isaiah, a second summary (31 July 2022)
  25. Long false positives (23 August 2022)
  26. A general visualization (25 August 2022)
  27. Stephen's defense speech (19 September 2022)
  28. Statistical Restoration Greek New Testament (31 July 2023)
  29. Qt version of bibref (11 March 2024)

Zoltán Kovács
Linz School of Education
Johannes Kepler University
Altenberger Strasse 69
A-4040 Linz