Fedra is a native, keyboard-first Mastodon client for Windows.
Windows 10 or 11
- Native Windows UI with screen-reader-friendly controls and live announcements.
- Multi-account support, including account switching while preserving per-account timelines.
- Timelines: Home, Notifications, Local, Federated, Direct Messages, Bookmarks, Favorites, User, Hashtag, Thread, and Search timelines.
- Real-time streaming for Home, Notifications, Local, Federated, and Direct timelines.
- Rich post creation and editing with:
- Visibility (Public, Unlisted, Followers only, Direct)
- Content warnings
- Content type (Default, plain text, markdown, HTML)
- Optional post language (ISO code)
- Media attachments with descriptions
- Poll creation and voting
- Relationship and discovery tools:
- Open profile/timeline from posts, mentions, and search
- Follow/unfollow hashtags
- View users who boosted/favorited posts
- Search for accounts, hashtags, and posts
- Tray integration and a global hotkey to show/hide the main window.
- Optional update checks at startup plus manual update checks.
- Fedra runs with a tray icon menu:
Show/HideExit
- A global hotkey toggles the main window (default:
Ctrl+Alt+F). - You can customize the global hotkey in
Options -> General -> Customize Window Hotkey....
Open options with Ctrl+,.
Use enter to send postsAlways prompt to open linksUse quick action keys in timelinesCheck for updates on startup- Notifications mode:
- Classic Windows notifications
- Sound only
- Disabled
Customize Window Hotkey...(Ctrl/Alt/Shift/Win modifiers + custom key)
- Autoload posts:
- Never
- When reaching the end
- When navigating past the end
- Posts to fetch when loading more (
1to40) - Content warning display:
- Show inline
- Don't show
- CW only
- Display name emoji filtering:
- None
- Unicode emojis
- Instance emojis
- All
Show oldest timeline entries firstAlways preserve thread orderCustomize Default Timelines...- Home and Notifications are always opened
- Additional startup timelines are configurable
- Post language:
- Per-post ISO language code can be set in compose dialogs
Customize how posts appear in each timeline using Jinja2-style templates.
- Select a timeline from the dropdown (or Global Default to set the fallback used by all timelines without their own override).
- Edit the Window title template, Post template, Boost template, and Quote template text fields.
- Click Reset to default to restore the selected timeline's templates to the global default (or restore the global default to the built-in default).
Templates are rendered per-entry each time a timeline is displayed. If a template contains a syntax error, the entry falls back to author: content.
| Variable | Value |
|---|---|
{{ author }} |
Display name (respects emoji filtering setting) |
{{ username }} |
@acct handle |
{{ content }} |
Post text, HTML-stripped (respects content warning display setting) |
{{ content_warning }} |
Spoiler text, or empty if none |
{{ relative_time }} |
Relative timestamp, e.g. 2 hours ago |
{{ absolute_time }} |
Absolute local timestamp, e.g. Feb 17, 2026 at 2:30 PM |
{{ visibility }} |
Public, Unlisted, Followers only, or Direct |
{{ reply_count }} |
e.g. 3 replies |
{{ boost_count }} |
e.g. 1 boost |
{{ favorite_count }} |
e.g. 5 favorites |
{{ client }} |
Posting app name, or empty if unknown |
{{ media }} |
Media attachment summary, or empty if none |
{{ poll }} |
Poll summary, or empty if none |
{{ booster }} |
Display name of the person who boosted (boost template only; empty for regular posts) |
{{ booster_username }} |
@acct handle of the booster (boost template only) |
{{ quote_author }} |
Display name of the quoted post's author (quote/boost templates) |
{{ quote_username }} |
@acct handle of the quoted post's author (quote/boost templates) |
{{ quote_content }} |
Text content of the quoted post (quote/boost templates) |
{{ quote_media }} |
Media summary of the quoted post (quote/boost templates) |
{{ quote_poll }} |
Poll summary of the quoted post (quote/boost templates) |
{{ app }} |
The application name (window title template only) |
{{ timeline }} |
The active timeline name (window title template only) |
{{ account }} |
Your @acct handle (window title template only) |
You can use {% if %} blocks to show text only when a variable is non-empty:
{% if client %}, via {{ client }}{% endif %}
Hide post types per timeline. Select a timeline from the dropdown, then check the types you want to hide:
- Original posts (not replies or boosts)
- Replies to others
- Replies to me
- Threads (self-replies)
- Boosts
- Quote posts
- Posts with media
- Posts without media
- Your posts
- Your replies
Ctrl+Alt+F: Show/hide main window (default global hotkey; customizable)F1: Open help
Left Arrow: Previous timelineRight Arrow: Next timelineCtrl+1..Ctrl+9: Switch to timeline index 1-9Ctrl+W: Close current timeline (when Quick Action Keys are off)Delete(in Timelines list): Close current timelineCtrl+[: Previous accountCtrl+]: Next accountCtrl+Shift+Left Arrow: Move current timeline left (in Timelines list)Ctrl+Shift+Right Arrow: Move current timeline right (in Timelines list)Shift+Left Arrow: Move current timeline left (in Posts list)Shift+Right Arrow: Move current timeline right (in Posts list)
Ctrl+T: Open selected user's timelineCtrl+U: Open user by handleCtrl+/: SearchCtrl+Shift+I: Open an instance's local timeline by domainCtrl+L: Open Local timelineCtrl+D: Open Direct Messages timelineCtrl+Shift+M: Open Mentions timelineCtrl+.: Load more postsF5: Refresh current timelineCtrl+F: Find in current timelineF3: Find next occurrenceShift+F3: Find previous occurrence
Ctrl+N: New postCtrl+R: Reply to all mentioned usersCtrl+Shift+R: Reply to author onlyCtrl+Q: Quote selected postEnter: Open links in selected postShift+Enter: View post details in FedraAlt+Enter: Open thread / context (or open selected search result)Ctrl+I: Play media attached to selected postCtrl+P: View profileAlt+F: Follow/unfollow the post's authorCtrl+M: View mentionsCtrl+H: View hashtagsCtrl+Shift+O: Open selected post in browserCtrl+Shift+C: Copy selected post textCtrl+E: Edit selected postDelete(in Posts list): Delete selected postCtrl+V: Vote in pollCtrl+Shift+F: Favorite/unfavoriteCtrl+Shift+K: Bookmark/unbookmarkCtrl+Shift+B: Boost/unboostCtrl+X: Toggle CW expansion (CW-only mode)
Ctrl+Alt+A: Manage accountsCtrl+Shift+E: Edit current profileCtrl+,: Open options- Options menu → Manage Filters...: View, add, edit, or delete server-side content filters
- Options menu → Manage Lists...: Create and manage Mastodon lists; open a list timeline via Timelines → Open List...
- Toggle with
Ctrl+Shift+Q - Single-key actions while enabled:
Backspace: Close current timelinec: New postr: Reply to allCtrl+R: Reply to authorq: Quote postf: Favorite/unfavoritek: Bookmark/unbookmarkb: Boost/unbooste: Edit posti: Play mediat: User timelineu: Open user by handleShift+I: Open instance timeline by domainm: Mentionsp: Profileh: Hashtagso: Open in browserv: Votex: Toggle CW expansion (CW-only mode).: Load more/: Search1..9: Switch timeline index
Press Ctrl+I (or I in Quick Action Keys mode) on a post with media attachments to open the media player. If the post has multiple attachments, a dialog lets you choose which one to play.
| Key | Action |
|---|---|
Space |
Play / Pause |
Left Arrow |
Seek backward 10 seconds |
Right Arrow |
Seek forward 10 seconds |
Up Arrow |
Volume up |
Down Arrow |
Volume down |
D |
Download media file |
Escape |
Close media player |
- Use
Ctrl+/to open Search. - Search types:
- All
- Accounts
- Hashtags
- Posts
- Results open in a dedicated timeline (
Search: <query>) and support paging.
- Installed build:
%APPDATA%\Fedra\config.json - Portable/uninstalled run:
config.jsonnext to the executable
- Added an actions button to the follower/following dialogs, working the exact same way as it does in the view profile dialog.
- Find in timeline now respects your timeline sort direction.
- Fixed a bug where going to the bottom of a thread, hitting home, and then performing an action would perform that action on the post you were previously on, not the newly focused one.
- Fixed Fedra crashing when exiting from the system tray.
- Fixed hashtags showing in the mentions dialog as @tags@instance.domain.
- Fixed modal dialogs not stacking how you'd expect, leading to you sometimes ending up with a bunch of ghost dialogs that you'd only discover when hiding Fedra's window.
- Fixed quote posts not rendering properly in the webview.
- Fixed streaming not working on instances such as mastodon.social.
- Fixed the compose dialog closing and taking your post content with it on error.
- Fixed your list position being randomly moved up a few items sometimes.
- Follower relationships are now shown in the follower/following dialogs.
- It is now possible to mark media as sensitive.
- It is now possible to mute/unmute hashtags directly in Fedra.
- Made Fedra expand quote posts much more reliably.
- Opening a thread will now put you on the post you selected from that thread, not the first post.
- Sensitive media in posts is now properly handled by Fedra.
- Swapped the open link and view thread hotkeys, so now enter opens links in posts and alt+enter opens the thread.
- Switched to a fully custom list control, backed by AccessKit, to prevent screen readers from rereading the focused item every minute among other things.
- The followers/following dialogs now properly fetch users from remote instances, and give you progress as they load the lists.
- The media player dialog will now be properly focused after downloading media.
- Various little UI tweaks, for example adding accelerators where there previously were none.
- Added a mentions timeline.
- Added an option to open the local timeline for a specific instence.
- Added the ability to play back and download media in posts!
- Fixed quick keys not disabling properly until you changed your list position.
- You will no longer get a select user dialog with two of the same entry for posts where a user boosts their own post.
- Your last-viewed post is now automatically restored upon relaunch if it is successfully fetched.
- Added an option to hide the totals from polls, and switched to preset amounts of time for poll durations.
- Added an option to restore previously opened timelines on startup.
- Added an option to show link previews in the timeline.
- Added many more supported extensions to the add media dialog.
- Added support for managing and opening list timelines.
- Added support for reading and writing quote posts.
- Added a new timeline filters tab to the options dialog, allowing you to filter your timelines on the client side.
- Added the ability to schedule posts.
- Added the {{ booster_username }} template variable for consistent @username display.
- Added a thread mode check box to the new post dialog. When checked, every time you hit post, you'll get the dialog again, and be replying to your previous post.
- Fedra will now respect the account-wide default post visibility in the new post dialog.
- Fixed message duplication in the direct messages timeline.
- Fixed the description fields in the add media dialog not showing up.
- Fixed the post context menu not showing hotkeys and post-specific actions such as edit or delete.
- Fixed the post context menu showing incorrect labels for actions on boosted/favorited posts.
- It is now possible to interact with follower requests.
- It is now possible to reorder your timelines with ctrl+shift+left/right arrow.
- It is now possible to search your timelines with ctrl+f and f3/shift+f3.
- List timelines now stream.
- Opening the select user dialog is now much more responsive.
- Pinned posts are now shown at the top of user timelines.
- Removed the buggy global template system for now. There are plans to rewrite it in a much more stable way in the future.
- The default templates now hide the reply/boost/favorite counts if they're zero.
- The post details webview will now come up much faster and smoother.
- The timeline switching hotkeys now work in the list of timelines as well as the timeline list.
- You can now pin/unpin posts.
- Added a webview-based dialog for viewing the raw contents of a post.
- Added a new option, checked by default, to remove tracking parameters from URLs.
- Added an option to check for development builds upon update, not new stable releases.
- Added timeline templates, allowing you to customize everything about how Fedra's timeline entries are displayed. The relative/absolute time check box has also been removed from the options dialog, and is now settable per-template. See the templates section of the readme for more details.
- Filters are now respected in the timeline, and you can manage them in a super basic sense. This capability will be expanded in a future version.
- Fixed attaching media, so more than teeny tiny files work now.
- Fixed the handling of JSON responses from certain servers.
- Hopefully fixed a rare but annoying crash in the new post dialog.
- It is now possible to type past the character limit once again, but you will get a warning sound when you do so.
- Post statistics are now properly pluralized, so you will now hear "1 reply" instead of "1 replies".
- pressing shift+f10 or the context menu key on a post will now bring up a menu of post actions.
- Replies are properly grouped in threads now.
- The mentions dialog will now include users who haven't fedrated with your instance yet.
- The open user dialog will now be automatically prepopulated with all of the usernames that appear in your current timeline.
- When closing a timeline, the name of the newly focused one will now be spoken before the timeline contents, as intended.
- Added the ability for you to set the language of your posts!
- API errors are now included in error output in a brief form.
- Fixed Delete not closing timelines when the list had keyboard focus.
- Improved default configuration values for new Fedra installs.
- Reduced unnecessary screen reader output when entering the compose dialog.
- The compose dialog now enforces the instance's character limit.
- The focused timeline name is now spoken when using Ctrl+1-9, matching left/right arrow behavior.
- The reply dialog title is now announced with the correct character count on first focus.
- There is now only one key to back out of a timeline and close it, Ctrl+W normally or backspace in quick keys mode.
- Updated the README and performed internal code cleanup.
- When a timeline is closed, the newly focused timeline is now announced.
- Initial release of the Fedra desktop Mastodon client, currently for Windows only.