The JMdictDB Project


Project Description
Code and Documentation


New 2021-12-05:

The JMdictDB web backend now uses WSGI and the Flask web framework rather than CGI. The installation docs are still being revised but some instructions for upgrading an existing site are available here: November 2021 WSGI Upgrade.

The CGI backend remains available but is deprecated and will be removed in the future.

New 2020-06-23:

A simpler installation procedure has been implemented that allows the JMdictDB software to be installed and configured for per-user use or system-wide. Once installed, the installed version is completely independent of the Git repository it was installed from allowing the latter to be removed, used for development, etc. without affecting the former. The installation documentation was rewritten and simplified.

In support of this, the directory structure of the source code has been completely reorganized.

A number of internal refactorings have been made in order to make the code more maintainable.

The changes are too numerous to list here in full, please see:
New 2019-03-10: Two new features:
New 2018-09-15: The JMdictDB source code is now using Git for version management instead of Mercurial and the primary repository is now at GitLab: The former JMdictDB Issue tracker based on Roundup has also been discontinued and replaced by the Issues feature of GitLab: Only issues tagged as "Bug" were migrated to GitLab; a decision on where and how to provide access to the old development issues is still pending.
New 2018-06-10 (revised 2018-09-15): is a standalone Python program that uses the conjugation tables developed for the JMdictDB project to demonstrate how simple a table-based Japanese word conjugator can be when using this approach. It has been moved out of JMdictDB to a separate, independent (git) project: (Revised to remove GitHub URL; GitLab is currently the only supported location.)
Older news items...

Project Description

JMdictDB is an open source project that provides a Postgresql database, Python API and web CGI front-end for storing and maintaining Japanese / multilingual dictionary data, primarily in support of Jim Breen's Japanese-English dictionary projects including: JMdict, JMnedict, Kanjidic2 WWWJDIC and others. Jim runs these projects under the auspices of the Electronic Dictionary Research and Development Group EDRDG).

The goals of this project (in priority order) are:

  1. To create a database to serve as a master repository for the information in the JMdict, EDICT, JMnedict, Examples, Kanjidic and other related files distributed by Jim Breen and the EDRDG.
  2. To provide a web-based system for the submission, review, and approval of corrections and new entries to these data.
  3. To provide freely available software to others who want to use or build upon, "JMdict in a database".
  4. To provide an open-source replacement for the principal author's Microsoft Access based JMdict database. :-)

Discussion of this project takes place on the Google Groups Edict-JMdict mailing list ( / /  Jim Breen maintains a web page describing the JMdict project's use of JMdictDB at

The project code is still undergoing active development and no promises are made regarding stability or backward compatibility. However, it is currently in use as the primary repository for the JMdict project dictionary data and the web interface is in use for submitting new entries and corrections to existing entries in WWWJDIC.

All the code developed for this project is GPL'd and maintained in a publicly accessible Git repository (links below). Additional help is welcome; please post to the edict-jmdict mailing list, or email the current principal developer at the address at the bottom of this page.

The code currently consists of scripts to create and load JMdict (and related data such as the JMnedict "Japanese names" file, or the Tatoeba "examples" file) into a Postgresql database, some maintenance and other command line tools, and a set of CGI scripts to allow access and updating of the database using a web browser. The code is written in Python-3 (Python-2 is no longer supported) and is tested under Ubuntu Linux. More information on prerequisites is in the doc/install.html file. file.


Access to the instance of JMdictDB running at Jim Breen's site is through either the Edit links at on words looked up at wwwjdic or directly at: Simple Search, Advanced Search, New Entry, Recent Updates.

Code and Documentation

jmdictdb -- JMdictDB project hosted at GitLab.
Issue tracker -- Issue tracker (at GitLab) for the JMdictDB project.
jmdictdb.tar.gz -- Download source code, latest development version (gzipped tar file).
install.html -- The INSTALL file, includes prerequisites and installation instructions.
schema.html -- Comprehensive description of the database schema (2008-11-12).
schema.png, schema.pdf -- Diagram of the database schema (200KB, 2008-11-12).

JMdictDB at

The following links provide details about the implementation and use of JMdictDB at Jim Breen's EDRDG (Electronic Dictionary Research and Development Group) website (, for receiving new entry and correction suggestions for wwwjdict: