The Citation Formatter's Input Contract: Style-Dependent Required Fields and a 14-Key Backup File
I work on OnePassApps, the team behind app.onepassapps.com. The Citation Formatter turns manually typed sources into a bibliography in three versioned styles. I measured it again on 10 November 2026, signed out, in a rea
I work on OnePassApps, the team behind app.onepassapps.com. The Citation Formatter turns manually typed sources into a bibliography in three versioned styles. I measured it again on 10 November 2026, signed out, in a real browser tab, and this post is about the half of the app you only meet when you type: what each source type demands before the app will accept the source, and what the backup file it writes actually contains.
My earlier post on this app covers what the app outputs - one source rendered in APA, MLA and Chicago. This one covers the input side and the file the app writes when you walk away.
Three source types, three different forms
The panel's own line: "Format manually entered books, web pages and journal articles in three versioned styles."
Picking a source type swaps the form. Measured field by field, with the character caps the app puts on the inputs:
- Book: Source title (500), Authors (3,000), Publisher (500), Publication date (10), Publication place (500), URL (2,000, optional), DOI (500, optional).
- Journal article: Source title (500), Authors (3,000), Journal name (500), Publication date (10), Volume (500), Issue (500, optional), Pages (500, optional), URL (2,000, optional), DOI (500, optional).
- Web page: Source title (500), Authors (3,000), Website name (500), Publication date (10), Accessed date, Page URL (2,000).
Two of those caps are the story. The Publication date box holds ten characters, which is why the hint under it reads "YYYY, YYYY-MM or YYYY-MM-DD" - the box is sized for the date and nothing else. And the Authors box holds 3,000 characters for a field whose own hint says "One per line, up to 10."
The required-field set depends on the style you have selected
Type a book title and nothing else and the app refuses with one line that names the exact fields it wants.
Under APA: "One field needs attention before this source can be saved: Publisher."
Under MLA, the same: "One field needs attention before this source can be saved: Publisher."
Under Chicago, the same form refuses two: "2 fields need attention before this source can be saved: Publisher, Publication place."
The count is spelled as a word when there is one and as a digit when there are two or three - "One field" next to "2 fields" and "3 fields". The line under it follows the same count: "Fix the marked field to continue." when one field is flagged, "Fix the marked fields to continue." when more than one is.
That difference is not cosmetic, and it is not the style's formatting rules talking. Chicago is the only style that needs a place, and the app says so in the field's own hint: "Enter the publication place for this Chicago book entry." A web page behaves the same way. Under APA it wants two fields - "2 fields need attention before this source can be saved: Website name, Page URL." - and under Chicago it wants three - "3 fields need attention before this source can be saved: Website name, Page URL, Accessed date." - adding the access date, whose hint reads "Enter the date you accessed this undated Chicago web page."
A journal article is the exception. It wants "2 fields need attention before this source can be saved: Journal name, Volume." under APA and under Chicago alike.
So the required-field set is not a property of the source type alone. It is a property of the source type and the style you had selected when you pressed the button.
Three refusals about the value, not the missing field
An empty title gives "Enter a source title." and the banner names "2 fields need attention before this source can be saved: Source title, Publisher."
Eleven author lines give "Use at most 10 authors, one per line: Surname, Given names. For an organisation, use its name without a comma." and the banner names "2 fields need attention before this source can be saved: Authors, Publisher."
A date written as 15/03/2024 gives "Use YYYY, YYYY-MM or a real date in YYYY-MM-DD format." and the banner names "One field needs attention before this source can be saved: Publication date."
In all three the source is not added: the counter under Sources stays where it was, and the half-typed source sits in the form marked "Draft - needs details" with a middot between the words.
The backup file: six keys on top, fourteen on every source
The panel says "Nothing is saved automatically. Export JSON to keep a copy." Pressing Export bibliography JSON writes a file called bibliography.json. Six keys sit on top of it: version, app, style, sources, draft, editingIndex.
Every source object inside sources carries the same fourteen keys, whatever its type: type, title, authors, date, publisher, place, website, journal, volume, issue, pages, url, doi, accessed. The keys that belong to the other source types - journal, volume, issue, pages, website and accessed - are written as empty strings.
The draft is a full object of those same fourteen keys: the form exactly as you left it. editingIndex was null in every export I took, because I never had a source open for editing at the time.
The file is small, and its size follows the content: one export of a single source with a draft came to 746 bytes, and two exports of three sources with a draft came to 1,431 bytes and 1,423 bytes.
It also does not merge anything. Adding the same book twice is accepted twice - the counter went 0, 1, 2 as I pressed the button again - and the export carries both copies of "Zebra Studies" as two separate entries.
What happens when you put a file back
Selecting a file through the app's own file input produced three different answers:
- a file that is not JSON at all: "This is not a valid JSON file."
- JSON that is not a backup of this app: "This file is not a supported bibliography backup. Invalid input"
- the app's own exported file: "Import cancelled. Your current sources and draft were kept."
The first two end with "Import failed. Your current sources and draft were kept." and the source counter never moved in any of the three cases.
I did not complete a successful import, so this post does not claim that the round trip works, and it does not claim that the app cannot take its own backup back - only that these are the messages that appeared, that no source was restored and that nothing was overwritten.
Limits
- Measured on 10 November 2026, signed out, in one browser tab, on one build of the app.
- Each refusal was measured on a fresh page with the style set explicitly before the attempt, and the counter was read after it.
- I did not complete a successful import, so I make no claim about whether a backup restores a bibliography.
- The "Import cancelled" message for the app's own export may simply be the file input refusing to fire a second change event for a path it already held; I did not rule that out.
- The three import files were real files on disk, set on the app's own file input from a script - the app read and answered each one - but I did not drive the operating system's file picker, so I make no claim about that path.
- The 100-source ceiling is the app's own counter; I did not reach it.
- I did not press TXT, HTML or Print here - my earlier post on this app covered the export row.
If you want to try it, the Citation Formatter is here:
and the rest of the apps are listed here:
My earlier post on this app, which covers the output side, is here: https://dev.to/onepassapps/format-a-citation-in-apa-mla-or-chicago-in-the-browser-what-the-app-actually-outputs-43eh
I work on OnePassApps, so this is our own app and our own measurement.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.