Neatbo.

Turn local review and reading records into checkable lists

Preserve declared targets, original comments and whole reading records so a complete export can be checked against its source.

Start with the evidence that already exists

A PDF reader may ignore a link without showing the original target. A supervisor may return comments that contain several lines. A Kindle log may repeat an excerpt after a reader revisits a passage. Each workflow needs the actual source structure and an explicit handoff.

A useful record retains context
SourceKeepDo not infer
PDF LinkPage, raw rectangle, declared action and target stateURL reachability or safety
Review annotationOriginal Contents, author, raw dates, IRT relationMissing highlighted text or rich-only body
MyClippings recordExact title, ranges, raw date, multiline body and indexesAuthor split, timezone or latest overlapping excerpt

A missing target is still a useful row

Keeping a Link with no target or an unknown viewer action is more useful than omitting it from a list of successful URLs. The complete output states what the file declared. A Launch filename is inert text; a JavaScript declaration remains explicitly unsupported. No network lookup is necessary to prove that the declaration exists.

NameTree keys are ordered by original PDF bytes. A decoded name may sort differently, and a library convenience index may hide legacy destinations when a NameTree is also present. The actual export reads both sources and rejects contradictory duplicates instead of relying on that convenience view.

A review thread needs original text and missing states

Preserve line breaks within a comment and separate the records by their source identity. A reply without a known parent must remain dangling. A rich-only annotation cannot become an empty-looking successful comment: its missing Contents and unsupported rich-text flag must travel with the record.

Link, Widget and Popup are different roles. Counting them separately helps explain why an annotation count is larger than the review count. A Redact annotation is a review record here; this export neither applies redaction nor certifies erased content.

Exact duplicates and overlapping excerpts have different meaning

An identical whole log record can share one retained ID while keeping every source index. Two passages at overlapping locations may contain different text and both matter. Preserve them rather than replacing one with a guessed newest version. Different line endings, whitespace or raw dates also prevent exact dedup.

The title is an original string. Parentheses may be an author annotation or part of the title; sorting and grouping do not invent a split. The date is likewise raw text. A local organizer does not need to infer a timezone to keep it.

  • Use source order when chronology in the original file matters.
  • Use explicit numeric range order to review notes within each exact title.
  • Keep the downloaded provenance map when removing identical copies.
  • Retain the original file; organized exports are not a Kindle reimport format.

Review the complete handoff

A bounded browser table makes a 100,000-record log usable without pretending that the preview is complete. The complete files preserve every kept record and original index. Quoted CSV protects formula-like values while JSON and literal Markdown retain original text.

Independent readback of real 500-page/10,000-record PDFs and separate 100,000-record and 10MiB log vectors checks all full outputs. A failed or cancelled job has no partial success export. Correct the source structure and rerun the same task, then inspect the complete artifacts before sharing them.

References

Tools in this category

Expand a tool to see its steps, options and supported formats, then open its workspace.

PDF clickable link target inventoryRead real PDF Link annotations, declared actions and named destinations into complete local JSON and CSV.

Inspect actual clickable annotations, including missing, dangling and explicitly unsupported targets. URI, JavaScript and launch declarations remain inert text; nothing is opened, executed, requested or repaired. Rectangles use raw PDF points, not rotated screen coordinates.

Steps

  1. Choose a local PDF.
  2. Review target states and raw page rectangles.
  3. Download complete JSON/CSV before investigating a declared target elsewhere.

Capabilities and limits

  • One unsigned, unencrypted PDF up to 30MiB and 500 pages; 200,000 parsed objects, depth 64, 10,000 annotations and destinations, 1,000 NameTree nodes, 16MiB extracted strings and 4,096 bytes per PDF name. Full JSON/CSV combined 20MiB. Object/XRef streams total 80MiB decoded; plain/Flate/LZW/ASCII85/ASCIIHex/RunLength, up to four filters, Predictor=1 only (LZW EarlyChange=0/1). Both cases of legal #hex names are parsed without dropping records.
  • Resolve direct targets, legacy Dests and full Names/Dests trees using original byte ordering and limits. First release declares URI, GoTo, GoToR, Launch, Named and Next; other actions retain original type/declaration as unsupported. Cycles, conflicting page ownership, duplicate names, malformed trees and invalid URI types fail the whole inventory.
  • Preview only the first 200 rows and 2,000 UTF16 characters per cell. Complete downloads retain targets. A written URI is not evidence of network reachability or safety; text URLs outside Link annotations are not counted.
Open PDF clickable link target inventory →
PDF review comment and reply exportExport original PDF review text, authors, raw dates, geometry and reply relationships as complete JSON, CSV and Markdown.

Read actual review annotations without changing the PDF. Keep multiline plain Contents, raw author/date declarations and reply context. Missing Contents remains null; rich markup presence is flagged, never executed or guessed into text. Highlight artwork and flattened page text are not OCR inputs.

Steps

  1. Choose the reviewed local PDF.
  2. Review plain text, missing-content flags and reply status.
  3. Download complete JSON, quoted CSV and literal Markdown for your task system.

Capabilities and limits

  • One unsigned, unencrypted PDF up to 30MiB and 500 pages; 200,000 objects, depth 64, 10,000 annotations, extracted strings 16MiB and PDF names 4,096 bytes each. JSON/CSV/Markdown combined 20MiB. Object/XRef streams total 80MiB decoded; plain/Flate/LZW/ASCII85/ASCIIHex/RunLength, up to four filters, Predictor=1 only (LZW EarlyChange=0/1). Both cases of legal #hex names are parsed without dropping records.
  • Supported: Text, FreeText, Highlight, Underline, StrikeOut, Squiggly, Ink, Stamp, Caret, Line, Square, Circle, Polygon, PolyLine and Redact. Link, Widget and Popup are excluded with exact counts. Any other subtype fails the whole export.
  • Raw PDF Rect/QuadPoints are source coordinates, not visible screen coordinates. Duplicate identities/names, contradictory owner pages, malformed geometry and reply cycles fail. Dangling replies stay flagged; 200 preview rows and 2,000 UTF16 characters per cell do not truncate downloads.
Open PDF review comment and reply export →
Kindle local clipping organizerGroup complete English MyClippings records by original book title and explicit location, keeping multiline notes and exact duplicate provenance.

Choose a UTF8 MyClippings.txt already copied from your device. Parse Highlight, Note and Bookmark metadata; keep page/location ranges and the original Added on text without inferring a timezone. Group exact source titles and optionally remove identical whole records; overlapping or different excerpts remain separate.

Steps

  1. Copy your own MyClippings.txt from the device and select it.
  2. Choose explicit range sorting or source order and optional exact dedup.
  3. Download complete grouped JSON, CSV and literal Markdown; keep the original log.

Available options

Ordering
Explicit location/page range · Original order within each book
Remove exact whole-record duplicates
On by default

Capabilities and limits

  • One UTF8 file up to 10MiB and 100,000 complete records; complete JSON/CSV/Markdown combined 40MiB. English metadata only; unsupported locale/type, malformed or reversed ranges, repeated declarations, bad UTF8 and missing delimiters fail with source position.
  • The exact line ========== is a reserved record delimiter. Original BOM and CRLF/LF are reported; internal body line endings and Unicode remain unchanged. Exact dedup includes raw metadata and line endings, retaining every original-to-kept mapping. Title/author ambiguity is not guessed.
  • Preview only the first 200 records and 2,000 UTF16 characters per cell; download all records. CSV guards formula-like values, JSON/Markdown keep originals. No device/account access, cloud sync, Kindle reimport or missing-log recovery. Empty logs and empty Bookmark bodies are valid.
Open Kindle local clipping organizer →

Tools used in this article

PDF clickable link target inventory →Read real PDF Link annotations, declared actions and named destinations into complete local JSON and CSV.PDF review comment and reply export →Export original PDF review text, authors, raw dates, geometry and reply relationships as complete JSON, CSV and Markdown.Kindle local clipping organizer →Group complete English MyClippings records by original book title and explicit location, keeping multiline notes and exact duplicate provenance.