{"id":20390653,"url":"https://github.com/inulute/medium-unlocker","last_synced_at":"2026-03-05T20:04:30.084Z","repository":{"id":228923855,"uuid":"775136980","full_name":"inulute/medium-unlocker","owner":"inulute","description":"Medium Unlocker is a web tool designed to access Medium articles without any paywalls. ","archived":false,"fork":false,"pushed_at":"2024-07-01T06:07:18.000Z","size":118,"stargazers_count":92,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-15T10:08:40.628Z","etag":null,"topics":["bypass-paywalls","medium","medium-article","medium-articles","medium-unlimited","medium-unlocker"],"latest_commit_sha":null,"homepage":"https://medium-unlocker.inulute.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inulute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-20T20:35:16.000Z","updated_at":"2024-12-27T04:44:41.000Z","dependencies_parsed_at":"2024-07-05T13:46:57.083Z","dependency_job_id":null,"html_url":"https://github.com/inulute/medium-unlocker","commit_stats":null,"previous_names":["inulute/medium-unlocker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inulute%2Fmedium-unlocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inulute%2Fmedium-unlocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inulute%2Fmedium-unlocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inulute%2Fmedium-unlocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inulute","download_url":"https://codeload.github.com/inulute/medium-unlocker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241940579,"owners_count":20045883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bypass-paywalls","medium","medium-article","medium-articles","medium-unlimited","medium-unlocker"],"created_at":"2024-11-15T03:26:09.358Z","updated_at":"2026-03-05T20:04:30.065Z","avatar_url":"https://github.com/inulute.png","language":"HTML","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"\u003cdiv align='center'\u003e\n  \u003cimg src=\"assets/medium_unlock_logo.svg\" alt=\"Medium Unlocker Logo\" height=\"80\"\u003e\n\n# Medium Unlocker\n\n**End-to-end paywall bypasser built from scratch around the freedium.cfd index.**\n\n\u003ca href=\"https://medium-unlocker.inulute.com/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Visit-Website-brightgreen?style=for-the-badge\" alt=\"Website Badge\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/inulute/medium-unlocker/releases/latest\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Download-Android%20App-blue?style=for-the-badge\" alt=\"Download Badge\"\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003ca href=\"https://github.com/inulute/medium-unlocker/stargazers\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/inulute/medium-unlocker?style=social\" alt=\"Stars\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/inulute\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/followers/inulute?style=social\u0026label=Follow\" alt=\"Followers\"\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n## ✨ Features\n\n## Project Background\n\n- Medium’s “3 free reads” wall is frustrating for casual browsing.  \n- freedium.cfd hosts publicly cached versions of Medium stories, but there was no polished way to reach them.  \n- Medium Unlocker bridges that gap with a custom UI, tailored network stack, and automation that lets readers paste or share a Medium URL and instantly open the matching freedium mirror.\n\n---\n\n## Feature Highlights\n\n### Web\n- **Purpose-built frontend** – React 18 SPA with a bespoke dark interface.\n- **URL normalizer** – Cleans Medium query noise and rewrites the slug for freedium.\n- **Result inspector** – Shows whether the article was fetched from cache or proxied live.\n- **Share-ready links** – Generates clean freedium URLs you can copy anywhere.\n\n### Android\n- **Native shell** – Java + WebView with Material Design 3 styling.\n- **One-tap share target** – Appears inside the Android share sheet for any Medium link.\n- **Inline resolver** – Performs the same URL normalization on-device, then loads freedium in a hardened WebView.\n- **Mirror Support** – Automatically switches to `freedium-mirror.cfd` if the primary server is blocked.\n- **Smart Auto-Retry** – Seamlessly detects connection failures and retries with the mirror server.\n- **Network extras** – Optional DoH, proxy toggles, custom SSL pinning for freedium’s cert chain.\n\n---\n\n## Quick Start\n\n### Web\n1. Go to [medium-unlocker.inulute.com](https://medium-unlocker.inulute.com).\n2. Paste any Medium article URL.\n3. Hit **Unlock** and read the freedium mirror.\n\n### Android\n1. [Grab the latest APK](https://github.com/inulute/medium-unlocker/releases/latest).\n2. Install (you may need to allow side-loading).\n3. Either:\n   - Share a Medium link and pick **Medium Unlocker**, or\n   - Open the app, paste a URL, tap **Unlock**.\n\n---\n\n## Tech Stack\n\n| Layer        | Stack                                                                 |\n|--------------|----------------------------------------------------------------------|\n| Web          | React 18, Vite tooling, CSS Modules, Inter font, Cloudflare Pages    |\n| Android      | Java, Material 3, OkHttp, WebView   |\n\n---\n\n## Disclaimer\n\n\u003e [!WARNING]\n\u003e Educational use only. You are responsible for respecting Medium’s Terms of Service and regional laws. This project does not host Medium content; it automates requests to freedium.cfd.\n\n\u003e [!NOTE]\n\u003e freedium.cfd is a public mirror. Its uptime, indexing speed, and article availability are outside my control.\n\n\u003e [!WARNING]\n\u003e **For Educational Purposes Only**\n\u003e\n\u003e This tool is provided for educational purposes to demonstrate web scraping and proxy techniques. Users are responsible for complying with Medium's Terms of Service and applicable laws. The developers are not responsible for any misuse.\n\n\u003e [!NOTE]\n\u003e **Service Availability**\n\u003e\n\u003e This tool relies on freedium.cfd, a third-party service. Availability and functionality may vary. Some articles may not be accessible if not indexed by the service.\n\n---\n\n## 🤝 Contributing\n\n## Feedback \u0026 Support\n\n- Issues: [GitHub Issues](https://github.com/inulute/medium-unlocker/issues)\n- Ideas: [Discussions](https://github.com/inulute/medium-unlocker/discussions)\n- Contact: [socials.inulute.com](https://socials.inulute.com)\n- Helpdesk: [support.inulute.com](https://support.inulute.com)\n\n---\n\n## Donate\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://support.inulute.com/donate\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Donate-Support-brightgreen?style=for-the-badge\" alt=\"Donate Badge\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n## License\n\nMIT License – see [`LICENSE`](https://github.com/inulute/medium-unlocker/blob/main/LICENSE) for details.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/inulute/medium-unlocker?style=for-the-badge\" alt=\"License Badge\"\u003e\n\u003c/div\u003e\n\n---\n\n## Credits\n\n- **freedium.cfd** – public cache the project is built around.\n- **Material Design + React teams** – foundational tooling.\n\n---\n\n\u003ca href=\"https://github.com/inulute/medium-unlocker\"\u003e\n    \u003cimg src=\"https://komarev.com/ghpvc/?username=inulute\u0026repo=medium-unlocker\u0026label=Repo%20Views\u0026color=olive\u0026style=pixel\u0026logo=github\u0026abbreviated=true\" alt=\"phantom-lens views\" /\u003e\n  \u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n**Created by [inulute](https://github.com/inulute)**  \n[Website](https://medium-unlocker.inulute.com) • [Download](https://github.com/inulute/medium-unlocker/releases/latest) • [Support](https://support.inulute.com) • [GitHub](https://github.com/inulute)\n\n\u003c/div\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finulute%2Fmedium-unlocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finulute%2Fmedium-unlocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finulute%2Fmedium-unlocker/lists"}