Skip to main content

overleaf-comments-export

Get the review comments out of an Overleaf paper, into Markdown and JSON you can read, keep, commit, and hand to an AI assistant.

CI PyPI Downloads License: MIT Python 3.10+

Overleaf leaves comments out of both the source download and the Git sync, so the only way to work through them is inside the editor, one at a time. On a paper with ninety comments from three co-authors that stops being workable.

What the output looks like

## Summary

- **Threads:** 2 (2 open, 0 resolved)
- **Tracked changes:** 0
- **Most active reviewers:** A. Reviewer (2), Co Author (1)

### § Method

**Line 142** — 2 comments

> …We propose **▸a novel framework◂** for measuring perceived quality across conditions.

**C014** _open · 1 reply_ — "a novel framework"
- **A. Reviewer** · 2026-02-25 06:13 UTC: Needs a citation. Which studies show this?
  - **Co Author** · 2026-02-26 10:00 UTC: Agree, Smith 2023 would work here.

**C015** _open_ — "coherent"
- **A. Reviewer** · 2026-02-27 13:46 UTC: This word is doing a lot of work. Define it.

Every comment sits in its section, next to the words it was attached to, with its replies underneath and a stable id you can point at.

Install and run

pip install overleaf-comments-export
overleaf-comments-export --gui

That opens a small window. Paste your project link, choose a folder, press the button. If you prefer the terminal:

overleaf-comments-export \
    --project-url https://www.overleaf.com/project/YOUR_PROJECT_ID \
    --out ./paper-comments

Python 3.10 or newer, tested up to 3.14, on macOS, Windows, and Linux.

What you get

File What it is
comments-<date>.md The readable export, or comments.md with --stable. Grouped by file, then section, then line. Stable ids C001, T001.
comments.json The same data, structured. Threads, anchors, tracked changes, source context.
comments.jsonl One self-contained record per comment, for pipelines.
agents.md A short brief telling an AI assistant how to read the other two.
response-letter.md Optional. A point-by-point reply document with a blank slot under every open comment.
by-reviewer/<name>.md Optional. One file per reviewer, so you can work through them one person at a time.

Working through comments with an AI

This is what the export is shaped for. Hand an assistant the folder and it can work on any comment by id, because it already knows the quoted passage, the section it lives in, and what the replies said.

Some things that work well.

  • Draft a reply to C014 that answers the reviewer and says what we changed.
  • Which comments are asking for the same thing? Group them.
  • Fill in the response letter for every comment from A. Reviewer.

Tracked changes come through too, as insertions and deletions with the surrounding text, so a deletion reads as before ~~removed~~ after.

Useful options

--response-letter        # draft a point-by-point reply document
--per-reviewer           # one report per reviewer
--reviewer "Emma"        # only threads this person touched
--no-resolved            # only what is still open
--render-mode detailed   # more source context around each comment
--stable                 # output that only changes when the comments change

Run overleaf-comments-export --help for the full list.

Keeping the comments in git

By default each run writes comments-<date>.md, so you end up with one file per run. That is fine for a one-off export and useless for version control.

--stable writes a single comments.md with no timestamps in it. Re-run it and the file does not move unless the comments actually moved.

overleaf-comments-export --project-url <link> --out ./review --stable
git add review/comments.md
git commit -m "reviewer comments as of today"

Next time you pull the comments, git diff shows the new ones and nothing else.

 thread_count: 41
+thread_count: 42

+**C042** _open_ — "the axis labels"
+- **A. Reviewer** · 2026-08-14 09:12 UTC: units are missing here

Signing in

The tool needs the session your browser already has. It reads that session and nothing else, and it only ever reads.

How Notes
Safari or Firefox Reads the cookie file directly. No password prompt.
Paste it yourself Works on every computer and browser. The window shows you how, step by step.
Chrome, Edge, Brave Works on macOS but asks for your Keychain password every run. Chrome 127 and newer on Windows cannot be read at all, so use the paste option there.

To paste it, open Overleaf, press F12, go to Application or Storage, then Cookies, then https://www.overleaf.com, and copy the value of overleaf_session2. Treat it like a password. It stops working when you sign out. Nothing is stored unless you tick the box that says so.

overleaf-comments-export --project-url <link> --out ./out --cookie "PASTE_HERE"

When something goes wrong

What you see What it means
Could not look up www.overleaf.com This computer is offline, or a VPN is in the way. Nothing to do with your project.
Overleaf refused the request The session expired. Sign in again in your browser and re-run.
Could not read Overleaf cookies Use the paste method above.
The window cannot open Python's Tk toolkit is missing. The message tells you what to install for your system.

Anything else, please open an issue. Never paste your session cookie into an issue.

Related projects

Several people hit this same wall independently. Different approaches suit different people, so here are the others.

All of them exist because of this three year old request. An official export would make every one of us unnecessary, which would be the better outcome.

Honest limitations

This is an unofficial tool. It uses Overleaf's internal endpoints, which are undocumented and can change with any release. It identifies itself honestly in every request, backs off when asked to, and cannot modify your project. Even so, it may stop working one day without warning. If that happens, please say so in an issue, because you may be the first to notice.

It is not affiliated with or endorsed by Overleaf. Use it on projects you have access to, in line with Overleaf's terms.

Feedback and contributing

Feedback shapes what gets built next.

  • Something broke, or the output was wrong. Open an issue. You do not need to be a programmer. Paste what the tool said and that is plenty.
  • Want it to do something it does not. Suggest a feature. Describe the task, not only the feature. The real task usually leads somewhere better.
  • A question, or something you built with it. Discussions.
  • Code. See CONTRIBUTING.md. Two minutes to get the tests running, and there are items marked help wanted in ROADMAP.md.

What is coming next is in ROADMAP.md. What already changed is in CHANGELOG.md.

Maintained by Shivang Gupta, who wrote it to handle the review comments on his own papers.

License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

overleaf_comments_export-0.5.0.tar.gz (53.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overleaf_comments_export-0.5.0-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file overleaf_comments_export-0.5.0.tar.gz.

File metadata

  • Download URL: overleaf_comments_export-0.5.0.tar.gz
  • Upload date:
  • Size: 53.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for overleaf_comments_export-0.5.0.tar.gz
Algorithm Hash digest
SHA256 2da71c93055a1e0b6c283ac974dddf600d96ac212c3f566913d3af9a247f7ac9
MD5 f4cffea5380ede607be98b230437be11
BLAKE2b-256 dff7ee3b5b32da635fa2dbf71439d920fa630bd31e1a73c2edd0c8843adfa068

See more details on using hashes here.

Provenance

The following attestation bundles were made for overleaf_comments_export-0.5.0.tar.gz:

Publisher: publish.yml on Mangluu/overleaf-comments-export

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file overleaf_comments_export-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for overleaf_comments_export-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e829a26bdd509f0c486e2cabaf29ec9100dec98fc4f2f3e84ef45f9df7e6c33
MD5 9fa37736ba4f8ead36436997b88a10d0
BLAKE2b-256 8689c19773a729026013f0db9e74ba04044eb804c32b726217c5cfd1dc52e801

See more details on using hashes here.

Provenance

The following attestation bundles were made for overleaf_comments_export-0.5.0-py3-none-any.whl:

Publisher: publish.yml on Mangluu/overleaf-comments-export

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page