A Chrome extension that enables seamless export of Coda pages to Markdown format with a single click.
coda2md.demo.mp4
- π One-click export of any Coda page to Markdown
- π Secure API key storage using Chrome's storage API
- π Clean Markdown output preserving formatting
- π¨ Professional and intuitive user interface
- β‘ Fast export with real-time status updates
-
Clone this repository:
git clone https://github.com/levindixon/coda2md.git cd coda2md
-
Open Chrome and navigate to
chrome://extensions/
-
Enable "Developer mode" in the top right corner
-
Click "Load unpacked" and select the extension directory
-
Get your Coda API token:
- Go to coda.io/account
- Scroll to "API Settings"
- Click "Generate API token"
- Copy the generated token
-
Configure the extension:
- Click the extension icon in Chrome
- Paste your API token when prompted
- Click "Save API Key"
- Navigate to any Coda page you want to export
- Click the coda2md extension icon
- Click "Export Current Page"
- The page will be downloaded as a
.md
file to your Downloads folder
The extension uses Coda's official API to:
- Extract the document and page ID from the current URL
- Initiate an export request for the page
- Poll the export status until completion
- Download the resulting Markdown file
The extension works with standard Coda page URLs:
https://coda.io/d/Document-Name_dXXXXXXXXXX/Page-Name_suXXX
- Your API key is stored securely in Chrome's local storage
- The API key is never exposed in the extension UI
- All API calls are made over HTTPS
- The extension only requests necessary permissions
The extension requires the following permissions:
- activeTab: To read the current page URL
- storage: To securely store your API key
- downloads: To save the exported Markdown file
- host_permissions: To make API calls to coda.io
- Cause: You're not on a Coda page or the URL format isn't recognized
- Solution: Navigate to a specific Coda page (not the homepage, workspace, or docs list)
- Valid URL example:
https://coda.io/d/Document-Name_dXXXXXXXXXX/Page-Name_suXXX
- Cause: No API key has been saved in the extension
- Solution:
- Click the extension icon
- Enter your Coda API key
- Click "Save API Key"
- Cause: The API key is incorrect or has been revoked
- Solution:
- Go to coda.io/account β API Settings
- Generate a new API token
- Update the key in the extension
- Cause: Large pages take longer to export than the 20-second timeout
- Solution:
- Try exporting a smaller section of the page
- Break large pages into smaller sub-pages
- Wait a moment and try again
- Cause: Attempting to re-export the same page too quickly (Coda API limitation)
- Solution:
- Wait at least 2-3 seconds between exports of the same page
- The extension now automatically adds a delay to prevent this
- If you still see this error, wait a moment and try again
- Cause: The page may be private or you lack access
- Solution:
- Ensure you're logged into Coda in your browser
- Verify you have at least view access to the page
- Check if the page still exists (hasn't been deleted)
- Cause: Too many API requests in a short time
- Solution: Wait a few minutes before trying again
- Cause: Browser download settings or popup blockers
- Solution:
- Check Chrome's download settings
- Ensure popups are allowed for the extension
- Check your Downloads folder - the file may have downloaded silently
If you continue to experience issues:
- Check the browser console: Right-click the extension icon β "Inspect popup" β Console tab
- Verify your setup: Ensure you're using a recent version of Chrome
- Report bugs: Open an issue with:
- Error message
- Chrome version
- Steps to reproduce
- Console error logs (if any)
- Default: 10 requests per second
- Burst: 20 requests allowed in short bursts
- Daily: No published daily limit, but excessive use may trigger throttling
- Page Size: Very large pages (>10MB) may fail to export
- Export Format: Only Markdown format is supported by this extension
- Concurrent Exports: Only one export per page at a time
- Export Timeout: Exports that take longer than 5 minutes may fail
- Export ID Expiration: Export IDs expire immediately after use. When re-exporting the same page, wait at least 2 seconds between exports to avoid API errors
- Supported: Text, tables, lists, headings, links, basic formatting
- Limited Support: Complex formulas, some embedded content
- Not Exported: Interactive elements, buttons, reactions, comments
- Minimum Permission: View access to the page
- API Key Scope: Key must have read access to docs
- Authentication: API key must be valid and not expired
coda2md/
βββ manifest.json # Extension configuration
βββ background.js # Service worker for API calls
βββ popup.html # Extension popup UI
βββ popup.js # Popup interaction logic
βββ popup.css # Popup styling
βββ content.js # Content script (minimal)
βββ CLAUDE.md # Development guidance for AI assistants
βββ CONTRIBUTING.md # Contribution guidelines
βββ 16.png # Extension icon (16x16)
βββ 48.png # Extension icon (48x48)
βββ 128.png # Extension icon (128x128)
βββ README.md # This file
No build process is required - the extension runs directly from source.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have feature requests, please open an issue.
Made with β€οΈ by Claude for the Coda community