Transform your Medium and Peerlist articles into dev.to-ready Markdown with AI precision.
Live Demo · Report Bug · Request Feature · Contribute
DevMD is an open-source tool that seamlessly converts Medium and Peerlist blog posts into dev.to-compatible Markdown format. Powered by Google Gemini Flash, DevMD ensures your content maintains its structure, readability, and context throughout the conversion process.
Whether you're cross-posting content, migrating your blog, or optimizing articles for different platforms, DevMD streamlines the entire workflow with AI-powered intelligence.
- 🤖 AI-Powered Conversion – Leverages Google's Gemini Flash for intelligent content transformation
- 🔗 URL Import Support – Paste Medium or Peerlist URLs for instant content extraction
- 📝 Accurate Formatting – Preserves headings, paragraphs, code blocks, and styling automatically
- ⚡ Lightning Fast – Convert articles in seconds with optimized AI processing
- 🎨 Intuitive Interface – Clean, modern design built with Next.js and shadcn/ui
- 🛡️ Rate Limiting – Built-in Arcjet protection for fair usage and API sustainability
- 🔓 100% Open Source – Transparent, community-driven development
Before you begin, ensure you have:
- Node.js v14 or later (Download)
- npm or yarn package manager
- Gemini API Key from Google AI Studio
- Arcjet Key (optional) from Arcjet Dashboard
# Clone the repository
git clone https://github.com/suryanshsingh2001/devmd.git
# Navigate to project directory
cd devmd
# Install dependencies
npm install
# or
yarn installCreate a .env.local file in the root directory:
# Required: Your Gemini API key
GEMINI_API_KEY=your_gemini_api_key_here
# Optional: Arcjet for rate limiting
ARCJET_KEY=your_arcjet_key_here
# Rate limiting configuration
RATE_LIMIT_ENABLED=true # Set to 'false' to disable in development
MAX_REQUESTS=20
# Character limit per conversion
NEXT_PUBLIC_MAX_CHARACTERS=5000Note: Set
RATE_LIMIT_ENABLED=falseduring local development to disable rate limiting.
# Start development server
npm run dev
# or
yarn devOpen http://localhost:3000 in your browser to start using DevMD.
graph LR
A[Paste Article/URL] --> B[AI Processing]
B --> C[Gemini Flash Analysis]
C --> D[Markdown Conversion]
D --> E[dev.to Ready Output]
E --> F[Copy & Publish]
- Input – Paste your Medium/Peerlist article content or URL
- AI Analysis – Gemini Flash parses and understands your content structure
- Conversion – Content is transformed into dev.to-compatible Markdown
- Export – Copy the formatted Markdown and publish directly to dev.to
| Feature | Status | Workaround |
|---|---|---|
| 🖼️ Image Support | Not Available | Manual upload to dev.to required |
| ✂️ Character Limit | 5,000 characters | Split longer articles into parts |
| 🎥 Embedded Content | Limited | May require manual formatting |
- Automated image extraction and upload to dev.to
- Increased character limit (10,000+ characters)
- Enhanced code block preservation with syntax highlighting
- Support for embedded tweets and YouTube videos
- Browser Extension – Convert articles with one click from Medium/Peerlist
- Multi-Platform Export – Hashnode, Ghost, WordPress support
- SEO Optimizer – AI-powered recommendations for better reach
- Batch Processing – Convert multiple articles simultaneously
- Conversion History – Track and manage all your conversions
- Custom Templates – Community-driven conversion profiles
- Analytics Dashboard – Monitor conversion performance
Have ideas? Share them with us!
We love contributions from developers of all skill levels! DevMD is proudly participating in Hacktoberfest 2025 🎃
|
🐛 Bug Fixes Find and fix issues labeled |
✨ New Features Build features labeled |
📚 Documentation Improve docs labeled |
🎨 UI/UX Enhance design labeled |
# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/devmd.git
# 3. Create a feature branch
git checkout -b feature/amazing-feature
# 4. Make your changes and commit
git commit -m "feat: add amazing feature"
# 5. Push to your fork
git push origin feature/amazing-feature
# 6. Open a Pull Request✅ Do:
- Write meaningful commit messages
- Add tests for new features
- Update documentation when needed
- Follow the existing code style
- Be respectful and collaborative
❌ Don't:
- Submit untested code
- Make unrelated changes in one PR
- Ignore feedback from maintainers
Read our Contributing Guidelines and Code of Conduct for more details.
Use our templates when creating issues:
Contributing during October? Your PRs count toward Hacktoberfest!
Ground Rules:
- Contributions must add real value
- Test thoroughly before submitting
- Follow project standards
- Be patient and respectful
Check out good first issues to get started!
What platforms does DevMD support?
DevMD currently supports converting articles from Medium and Peerlist to dev.to format. Support for additional platforms (Hashnode, Ghost, WordPress) is planned for future releases.
How many conversions can I do per day?
The default limit is 20 conversions per day (configurable via MAX_REQUESTS). This ensures fair API usage and sustainability. Rate limiting can be disabled for local development.
How do I handle images in my articles?
Currently, images must be manually uploaded to dev.to. Automated image handling is our top priority feature and is actively being developed.
Is DevMD free to use?
Yes! DevMD is completely free and open source under the MIT License. However, you'll need your own Gemini API key, which has generous free tier limits from Google.
Can I use DevMD for commercial purposes?
Absolutely! The MIT License allows commercial use. Just remember to provide attribution and comply with Google's Gemini API terms of service.
Which AI model powers DevMD?
DevMD uses Google's Gemini Flash model, optimized for fast and high-quality text understanding and transformation.
What's the character limit for conversions?
Currently 5,000 characters per conversion. For longer articles, we recommend splitting them into multiple parts. We're working on increasing this limit.
Do I need an Arcjet key?
No, Arcjet is optional and only used for rate limiting. You can set RATE_LIMIT_ENABLED=false in your .env file to run without it.
|
Next.js |
React |
TypeScript |
Tailwind |
Additional Technologies:
- UI Components: shadcn/ui
- AI Processing: Google Gemini Flash
- Rate Limiting: Arcjet
- Icons: Lucide React
A huge thank you to all our contributors! 🎉
Want to see your face here? Start contributing today!
This project is licensed under the MIT License. Feel free to use, modify, and distribute as you see fit.
Maintainer: Suryansh Singh
Website: devmd.surydev.site
Issues: GitHub Issues
- Built with ❤️ using Next.js and shadcn/ui
- Powered by Google Gemini
- Icons provided by Lucide
- Rate limiting by Arcjet
- Inspired by the amazing developer community
Made with ❤️ by the DevMD community