BibShort is a client-side BibTeX title abbreviator created by Di Fang. It parses .bib text in the browser and rewrites only the selected journal, conference, and series fields. Bibliography data is never uploaded.
Official website: bibshort.fangd.net
Public source: github.com/fang-d/BibShort
ISO 4 / LTWA uses general title rules and English/multilingual ISSN LTWA word data. It contains no Nature, Science or other complete ISO title whitelist. IEEE preserves reviewed catalogue forms and uses their periodical word conventions only within that catalogue. Other titles use ISO 4 / LTWA in either mode. Missing LTWA words remain complete without a review warning unless an explicit, documented publisher word supplement applies. Only explicitly reviewed forms that the general rules cannot reproduce enter the IEEE title exception layer. See the complete reference table and 102-record review with five follow-up decisions.
Single braced or quoted field literals can be converted, including one-level braced acronyms or identifiers. Macros, concatenations, other nested text and LaTeX escapes are preserved as whole values with skip reasons. Unrecognized title qualifiers and ambiguous punctuation are preserved for review. Unlisted words stay complete without a review warning. Neither profile guarantees global uniqueness or publisher acceptance.
See conversion rules and limitations for clause references, exact matching/stem constraints, capitalization policies, source defects and the distinction between standards and heuristics. Elsevier requirements vary by journal; check its Guide for Authors.
Install the pinned build tools and build the production site (Node.js 22+ and Python 3.10+):
npm ci
npm run build
npm run serveThen visit http://localhost:4173. You may also open the source or built index.html directly: the browser dictionaries are precompiled into a classic script, so the app works under file:// without CORS errors.
Run npm run build first after cloning the repository. It downloads the official source data and generates the ignored abbreviations.js development artifact required by the source page. The GitHub Pages workflow performs this step automatically.
npm ci
npm run build
npm test
python3 -m unittest discover -s tests -p '*_test.py'Building the dictionaries requires access to the ISSN LTWA export, the IEEE reference word guide and IEEE title sheet. Every build writes build/ieee-audit.json, accounting for all title-sheet rows and unresolved differences; the site artifact excludes the audit and reference CSV; readable review tables remain in the repository under docs/. The original 102 records are fully accounted for (100 named entries and two non-title rows); five additional word-conflict records also have explicit decisions. Catalogue membership is published as scope metadata, while only necessary exceptions carry title mappings. Reviewed source cells are pinned by content: changes, disappearance or ambiguous duplicates stop the build until the review ledger is updated. A new unresolved catalogue difference also stops table export.
The review ledger distinguishes verbatim IEEE reference forms, maintained corrections and supplemental IEEE-deposited DOI metadata. R048 and R061 have only reference-table evidence for their identity; no current publication status is asserted. Explicit IEEE word rules govern suspect shorter forms when no independently established required title exception supports them. The review records both missing title components and word-form conflicts (for example Intel. → Intell.); DOI short titles cannot override the prescribed IEEE word rule. Historical titles are never silently replaced by successor titles. After an intentional dictionary review, refresh the committed readable snapshots from build/ieee-reference-table.csv and build/ieee-reviewed-catalogue.md into docs/.
Tests cover every reviewed form and explicit alias, source drift, general title rules, periodical/conference differences, repeat conversion, safe BibTeX boundaries, source-data conflicts, reports and production artifacts. Optional browser tests use a separately installed Playwright package and browsers (not a site dependency):
npm run serve
# In a second terminal where Playwright is available:
node tests/browser.cjsSet BIBSHORT_TEST_URL to override the preview URL and BIBSHORT_ENGINES to a comma-separated list of installed engines/channels (chromium,firefox,webkit, or chrome,msedge).
The published app has no runtime dependencies and makes no conversion API requests. A pinned, development-only esbuild installation minifies JavaScript and CSS; package-lock.json makes tool installation reproducible. The app and dictionaries form one deferred classic script with a SHA-256 content fingerprint. The small minified stylesheet is inlined in the HTML, eliminating a render-blocking stylesheet request. Source files remain readable and usable through file://.
The build always uses https://bibshort.fangd.net/ for the canonical URL, Open Graph metadata, structured data, robots sitemap directive, and sitemap. CNAME preserves the custom domain. llms.txt describes the controls, processing model, limitations, and authoritative sources for agents; it does not promise search ranking or agent support.
Pull requests build and test without deployment permissions. Pushes to main and manual runs build with current validated official dictionaries, run conversion and production-artifact tests, then deploy the exact tested artifact through GitHub Actions. Deployment is serialized without cancelling an in-progress Pages publication. Select GitHub Actions under repository Settings → Pages.
The deployment job downloads the verification attachment directly from its configured provider URL after the site tests and before artifact upload. Only the deployment artifact contains the downloaded file; it is never committed or added to the sitemap, page metadata, links, or robots rules. The response attachment filename takes precedence; the configured fallback name is used only when no filename is supplied. File bytes are preserved. Invalid attachments or failed downloads emit an Actions warning and use the exact user-supplied fallback bytes embedded in the build helper. The verification HTML file itself exists only in the generated deployment artifact. If writing the attachment fails, a warning is emitted and normal website publication still continues.
Content fingerprints prevent stale JavaScript after updates. GitHub Pages controls its own HTTP cache lifetime (currently observed as 600 seconds); repository files cannot override this header. This project intentionally includes no other host's cache configuration, CDN integration, or service worker. Inline minified CSS removes one request; the deferred fingerprinted script remains compatible with the existing Pages cache policy.
The interface uses native labelled controls, fieldsets, a skip link, live status messages, visible keyboard focus, reduced-motion support, and forced-colors selection indicators. The redundant top header is omitted so the main title leads directly into the workspace. Editors expand on desktop and stack on narrow screens. The dictionary status is visible only while loading or when loading fails; readiness is announced to screen readers without a persistent visual counter. Less frequently used field options sit below the editors, to the left of the conversion button on desktop and above a full-width button on mobile. Conversion and file access remain local. The build targets Chrome/Edge 90, Firefox 90, and Safari 14.1 syntax; newer browser APIs have fallbacks where needed. Engine tests are representative checks, not a guarantee for every browser/OS/assistive-technology combination.
Run Lighthouse with extensions disabled. The supplied September 8, 2026 reports included unminified/unused JavaScript from an ad-blocking extension; those scripts are not part of this site. Their unattributed forced reflows cannot conclusively be assigned to application code. Application layout reads have nevertheless been removed from resize callbacks and separated from DOM writes in conversion/scroll handling.
Conference identifiers such as (CVPR), -- ECCV 2024 and V.1 remain intact while title words abbreviate. Single-level braced identifiers such as {IJCAI-24} are supported; complex TeX expressions remain whole-field skips. Reports prioritize unconverted or uncertain fields and display their original text. IEEE conference ordinals use numeric forms; ISO 4 preserves their original spelling. See conversion rules for sources and limits.