📒 ACM Classification Selector

Posté le 14-08-2025 par Aliaume Lopez – lecture en 2 minutes (≈ 416 mots)

Tired of finding the correct ACM codes when publishing or pushing to the arXiv? Say no more, here is a simple website that will ease the pain: the acm classification finder.

Below is a lame copy-paste of the README.md file of the official acm classification tool repository, hosted on the evil GitHub.


It currently works with the following classifications from the ACM:

By default, the ACM 2012 classification is used, but they can be combined easily.

How to Use

Simply type your keywords in the search area, and suggestions of categories will be displayed below for you to select. Clicking on suggestions will add them to your “shopping cart” of categories, which appears below or on the right of the suggestions depending on your screen size. You can remove items from your cart by clicking on them again. To export your current selection, simply click on the “export selection” button, that will put your cart inside your system’s clipboard. By default, the export format is LaTeX code, but you can also decide to export into plaintext (ideal for arxiv forms), or paper-meta for a YAML output compatible with the paper-meta specification.

This repository is deeply inspired by the amazing work of Drops Daghstuhl, namely their acm classification tool. It improves over it by adding other classifications, and by being storable as a single webpage app (for instance on phones), whilist their tool performs a request on every keystrokes, and therefore requires constant internet connection.

There is also a “visual tool” from the ACM itself, but it is extremely painful to use, and again, only works for the 2012 classification, which is not yet used by the arXiv.

The Inner Workings

The current code is split in three separate components, in 5 languages:

  1. A python based extractor, that parses classification sources “as found online” (HTML, XML, or anything else), and produces normalized classifications in a JSON format.
  2. A rust based search engine, that simply imports these sources, creates a big transducer/automaton with it, and provides one search endpoint for every classification file. This rust library is intended to be compiled to webassembly and loaded in the frontend.
  3. An HTML+CSS+Javascript minimal frontend that loads the rust code as a wasm file, and simply interacts with the user in a minimalistic fashion.