I'd like to create a library of chess positions with associated tags. For example, one position might be tagged "Tactics", "Counterplay", and "Knight Forks". The goal is to be able to search the positions by tag to create examples/exercises for a specific idea without spending a huge amount of time digging up new positions. Does anyone know of a program/format that would be well-suited for this?

  • What platform? Windows, Mac, Linux?
    – Herb
    Mar 3, 2017 at 23:03
  • Not my area of expertise, but I would have thought that an XML database of FENS, motifs etc. would do the trick.
    – user1108
    Mar 4, 2017 at 13:07
  • @bad_bishop I was thinking similarly, either a csv file or a lightweight database
    – Herb
    Mar 4, 2017 at 16:13
  • I'm using Windows. Thanks for the comments - I was hoping there would be an existing program that does this, but building a database like you suggested should be feasible even for my programming skills.
    – Nate
    Mar 5, 2017 at 14:08

3 Answers 3


You could use a MySQL database with a column for the fen string and a column for the category. MySQL pairs well with php, perl, and python depending on what you w ant to use the database for (such as a website or something you can just use personally through a browser), a WAMP server can make this easier to set up.



It has a build in Medal system, and positions are searchable by piece maneuvers, text, fuzzy position searches, etc.

Why reinvent the wheel?


I suggest to read about Extended Position Description(EPD), a format based on Forsite Edward Notation (FEN) with specifications to store additional information.

In chessprogramming, there is a EPD syntax description of this standard.

It allows to record comments in fields c0 through c9, that are appropriate for your purpose.

Several years ago, EPD2diag version 1.5p5 was a good option to edit, save, analyze and annotate epd files. Now is older but could give you an idea of what can be obtained with such a program.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.