snapotter-hq/SnapOtter - Open Source PR Review Scorecard

Open-source, self-hosted file-processing tool. Convert, compress, OCR, transcribe & run local AI across image, video, audio, PDF & documents, via UI, REST API & pipelines. Your files never leave your network.

C-Rank Grade: A (Welcoming) - 68/100

External PR Merge Rate: 83%

Response Time: 10d

First Timer Success: 50%

Frequently Asked Questions

Is snapotter-hq/SnapOtter welcoming to first-time open-source contributors?

snapotter-hq/SnapOtter has a recorded first-timer success rate of 50.0%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in snapotter-hq/SnapOtter respond to incoming external pull requests in approximately 236.3 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 68.1 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 68.1 places snapotter-hq/SnapOtter in the A tier.

What is the external contributor pull request merge rate for snapotter-hq/SnapOtter?

The external contributor pull request merge rate for snapotter-hq/SnapOtter is 83.3%, based on public PR activity from non-core contributors.

Are there Good First Issues available in snapotter-hq/SnapOtter?

snapotter-hq/SnapOtter currently has 2 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

snapotter-hq
snapotter-hq/SnapOtterA•Welcoming2.8k
GitHub
Back to Explorer
snapotter-hq

snapotter-hq/SnapOtter

2,791
Active (30d)A•Welcoming(68/100)TypeScript

Open-source, self-hosted file-processing tool. Convert, compress, OCR, transcribe & run local AI across image, video, audio, PDF & documents, via UI, REST API & pipelines. Your files never leave your network.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Welcoming Community Builder

Warmth Score
8.9/10
Patience Score
8.8/10
Nitpick Rate
30%

Highly welcoming maintainers in snapotter-hq/SnapOtter. Prompt code reviews with positive guidance for new contributors.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
9 days+
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
83.3%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
50.0%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
8 core
Highly collaborative maintainer core
Diagnostic Health HUD
83.3%
Merge Gauge
50.0%
1st-Timer
Community Vibe48/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for snapotter-hq/SnapOtter
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/snapotter-hq/SnapOtter)](https://getmerged.abhishekco.de/snapotter-hq/SnapOtter?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Follow-up from #1207 (fixes #1059). The author scoped Escape out to stay under the 400-line limit and offered to take it next; @DevShoaib78, it's yours if you want it. Repro Open /editor, load an image, press L then Shift+L for the Polygonal Lasso. Click three times to drop vertices. The dashed rubber band and the close target on the first vertex appear. Press Escape. Expected: the polygon is discarded, the rubber band and close target disappear, and any existing selection is left alone. Actual: the rubber band and close target stay on screen. The next click adds a fourth vertex, and Enter or a click on the first vertex then closes a polygon the user tried to cancel. In add or subtract mode Escape also wipes the selection the user was building on, because the handler calls setSelection(null) unconditionally. Where it lives apps/web/src/hooks/use-editor-shortcuts.ts:717 is the Escape handler. It clears crop state, selected objects and the committed selection, and has never known abou

📅 Opened Sep 20, 2026💬 2 comments
Quality: 90/100Contribute

What happens today Three keys in the features namespace describe a countdown nothing renders: lessThanMinute: "Less than a minute left", oneMinuteLeft: "~1 minute left", minutesLeft: "~{mins} minutes left", git log -S oneMinuteLeft puts them in d38621d, the original 20-locale commit, and shows no later change. Grepping apps/, packages/ and tests/ for any of the three names returns only the 21 locale files themselves. That is 63 translated strings carried for nothing, and every new locale has to write them. Why nothing caught it The parity machinery is one-directional by design. TranslationKeys and tests/unit/web/i18n-parity.test.ts make sure the 20 locales match en.ts; nothing checks that an en.ts entry is reachable from the app. Gotcha Grep alone does not prove a key unreferenced, for the reason #922 gives: a destructured local (const tt = t.toolSettings[toolId]) hides the property access. It does not apply here, t.features is only ever read through direct property access (erase-objec

📅 Opened Sep 14, 2026💬 0 comments
Quality: 90/100Contribute

What happens today Every locale file in packages/shared/src/i18n/ carries the same line: mfaEnrollmentHeading: "Set up two-factor authentication to continue", All 21 of them, English included. On an instance with a required MFA policy, a Japanese or Arabic admin reaching the enrollment panel on the login page reads that heading in English while every string around it is translated. It is the only string in that state. Comparing every string literal of 26+ characters in each locale file against en.ts turns up 1 to 4 matches per file, and mfaEnrollmentHeading is the only one present in all 20 non-en files. The rest are legitimately identical, e.g. "Original: {width} x {height} px". Why nothing caught it TranslationKeys = DeepStringRecord<typeof en> makes a missing key a tsc error, and tests/unit/web/i18n-parity.test.ts catches extras. Neither looks at values, so a key copied from en.ts and never translated is invisible to both. Where it lives Rendered in apps/web/src/pages/login-page.tsx

📅 Opened Sep 14, 2026💬 0 comments
Quality: 90/100Contribute

From the in-app search box: tambahkan jpg to ico ("add jpg to ico") The capability exists under a name nobody searches for The favicon tool (packages/shared/src/constants.ts:162, "Generate all favicon and app icon sizes") already produces ICO. Someone who wants a single JPG turned into an .ico will not search for "favicon", they will search for "jpg to ico", and that returns nothing. Same shape as #733, where "edit pdf" failed to surface the pdf-edit tool, and the same shape as #1099 for audio. Two ways to fix it, and they are not exclusive Keywords. Add ico and favicon aliases to the favicon tool's keywords so the existing tool is findable by the words people actually type. Cheapest fix, and it helps immediately. A real preset. jpg-to-ico and png-to-ico as BASE_CONFIG entries. ICO is already a supported output format, so this is a settings lock and a narrowed sourceInputs, not new conversion code. Worth it because "one image, one .ico file" is a different job from "generate the full

📅 Opened Sep 12, 2026💬 0 comments
Quality: 90/100Contribute

Two pieces of feedback, both from people who went looking and found nothing: there is no opus to mp3 or to any audio [search] mp3 to ogg The capability is there, the preset isn't .opus and .ogg are both in AUDIO_INPUTS (packages/shared/src/modality.ts), and the generic audio converter handles them. So the first report is wrong on the facts, but right about the experience: searching "opus to mp3" returns nothing, so as far as that user is concerned the feature does not exist. This is the same failure #733 fixed for "edit pdf", where the tool existed and search could not find it. The preset matrix is lopsided Audio presets in packages/shared/src/conversion-presets.ts today: mp4-to-mp3 mov-to-mp3 mkv-to-mp3 webm-to-mp3 avi-to-mp3 mp4-to-wav mov-to-wav mp4-to-ogg m4a-to-mp3 m4a-to-wav aac-to-mp3 aac-to-wav aac-to-flac ogg-to-mp3 ogg-to-wav wav-to-mp3 mp3-to-wav flac-to-mp3 Almost everything converges on mp3 or wav. Going the other way barely exists: mp3-to-w

📅 Opened Sep 12, 2026💬 0 comments
Quality: 90/100Contribute
Looking for more TypeScript beginner tasks?Explore TypeScript GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for snapotter-hq/SnapOtter

When evaluating whether to contribute to snapotter-hq/SnapOtter, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of snapotter-hq/SnapOtter acknowledge new external contributions in approximately 9 days+. Out of all submitted pull requests from non-core authors in the last 180-day window, 83.3% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to snapotter-hq/SnapOtter

01

Is snapotter-hq/SnapOtter welcoming to first-time open-source contributors?

snapotter-hq/SnapOtter has a recorded first-timer success rate of 50.0%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~9 days+. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 68.1 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 68.1 places snapotter-hq/SnapOtter in the Welcoming tier.

04

What is the external contributor pull request merge rate for snapotter-hq/SnapOtter?

The external pull request merge rate is 83.3%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in snapotter-hq/SnapOtter?

Yes, snapotter-hq/SnapOtter currently has 2 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for snapotter-hq/SnapOtter are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.