Fit

by joshuakto
5
4
3
2
1
Score: 66/100

Description

Category: File Management

The Fit plugin is a game-changer for Obsidian users who need to sync their files across multiple devices. With its universally supported feature, you can effortlessly synchronize your vault across mobile and desktop devices with just one click. The plugin also boasts an intuitive setup process, making it easy to configure even if you're new to GitHub. Additionally, the auto-sync feature ensures that your changes are reflected in real-time, while the conflict resolution mechanism allows you to resolve any discrepancies after syncing. Whether you're working on a small or large-scale project, Fit is the perfect solution for maintaining consistency across all your devices.

Reviews

  • David Barnett
    Reviewed on Nov 27th, 2025
    No review text provided.

Stats

239
stars
50,997
downloads
41
forks
785
days
2
days
118
days
139
total PRs
16
open PRs
27
closed PRs
96
merged PRs
90
total issues
8
open issues
82
closed issues
157
commits

Latest Version

4 months ago

Changelog

What's Changed

New Contributors

Full Changelog: https://github.com/joshuakto/fit/compare/1.3.0...1.4.0

README file from

Github

FIT

Obsidian Downloads

Sync your files across mobile and desktop devices with one click.

Community project

This project is a community collaboration. If you'd like to contribute please check out the Discussions section on GitHub to suggest or discuss ideas.

Features

  • Universally supported: sync your vault across multiple devices, supports both mobile and desktop
  • Auto sync is now available 🎉
  • One-click to sync your vault
  • Conflict resolution: Stores conflicting changes from remote in the local _fit folder so you can resolve conflicts after sync
  • Guided setup: Intuitive settings, easy to configure even if you are new to GitHub
  • Works with existing vaults or repos

Note: This plugin is still in beta, please backup your vault before using this plugin.

Quick demo

Kapture 2024-03-15 at 17 37 07

Setup

  1. Create a personal access token with read/write access to the repo for your vault (refer to Github: creating a personal access token)
  2. Once the personal access token is filled in, you can authenticate the user. The GitHub username, list of repositories, and branches will auto-populate.
  3. Select a repo and branch and you are ready to sync.

NOTE: For security, it's recommended to limit the token scope to only the necessary repository for your vault and avoid sharing your entire plugin settings file that contains this token.

How Sync Works

What gets synced

✅ Synced files:

  • Regular markdown files (.md)
  • Attachments (images, PDFs, etc.)
  • Any files in your vault root

❌ NOT synced (protected paths):

  • .obsidian/ folder (Obsidian settings and plugins)
  • _fit/ folder (conflict resolution area)
  • Hidden files like .gitignore, .env (not currently supported - see #92 for planned opt-in support)

Conflict handling

When the same file is modified both locally and remotely, FIT:

  • Keeps your local version in place
  • Saves the remote version to _fit/path/to/file.md
  • You can manually compare and merge the versions
  • If the same file clashes again before you resolve it, the _fit/ version is overwritten with the latest remote version (sync doesn't fail)

See Common Issues below for detailed conflict resolution steps.

First sync

  • It is advised to use a new repo for syncing an existing vault, to minimize the chance of file name conflict on the first sync
  • If your existing vault or repo is large, the initial sync would take longer and require a good internet connection

Manually trigger sync on Obsidian mobile

related issue: #190

On Obsidian mobile, linking sync to a hotkey which requires the presence of a keyboard is not an ideal approach to manually trigger sync. A more intuitive set of procedures are:

  • Open any repository with FIT configured
  • Swipe down from anywhere on the screen to open command menu
  • Search for "Fit: Fit Sync" and click to sync

Alternative: "Fit Sync" can be pinned to the ribbon menu from "Setting > Appearance > Interface > Ribbon menu configuration"

🔒 Security

The FIT maintainers make every effort to protect your security and protect against data loss. However, mistakes can happen. Users are highly recommended to do a security review of the code of this project before trusting it with their data. You could use an AI tool for that such as Claude Code.

You should also take care with security tokens you use to ensure they don't leak, because anyone with access to those can read and write your vault repository even if it's private (or worse if you configure broad unrestricted permissions on your token). In particular, avoid syncing your .obsidian/ files with other tools if you don't know what you're doing, and consider adding .gitignore rules to ignore .obsidian/ paths if you'll be syncing anything using git (FIT itself never syncs .obsidian/ - see How Sync Works).

Common Issues

Why: Git (and GitHub) doesn't track empty directories. This is a fundamental limitation of Git, not a FIT bug.

Solution: Add a placeholder file like _gitkeep or README.md to keep the folder. Empty folders will only sync once they contain files.

Why: GitHub API has file size limits (~100MB hard limit, issues with files >10MB).

Symptoms: Error messages like "input too large to process" or "File 'X' is too large..."

Solutions:

  • Move large files (>20MB) outside your vault before syncing
  • Manually sync large files to GitHub using other tools (to create them and any time they're modified)
  • Add the files to .gitignore to exclude them from sync (once .gitignore is supported, #92)

What happens: When the same file is modified locally AND on GitHub, FIT saves both versions:

  • Your local version stays in place
  • The remote version is saved to _fit/path/to/file.md

How to resolve:

  1. Find conflict files in the _fit/ folder
  2. Compare both versions
  3. Manually merge the changes you want to keep
  4. Delete the _fit/ version when done
  5. Sync again

Prevention: Sync regularly (enable auto-sync) and avoid editing the same file on multiple devices simultaneously.

Symptoms: Binary files (JPG, PNG, PDF) appear as gibberish text in GitHub like ����JFIF��... instead of displaying properly

Cause: Bug in v1.4.0-beta.3 where binary files were incorrectly read as text on some platforms

Solution:

  1. Check file history in GitHub to find bad changes
  2. Use git to restore previous versions OR manually copy from history
  3. Update to v1.4 stable when available or a different beta version
  4. Re-sync - files will upload correctly

Note: This only affected beta versions. Images and PDFs sync correctly in v1.4+.

More info: See https://github.com/joshuakto/fit/issues/156 about the regression and older "correct format" error.

Roadmap

See CONTRIBUTING.md for current milestone and long-term priorities.

Relevant plugins

There are other community plugins with more advanced git features, if you need features such as branching of your repo, Git is a nice plugin to check out.

There are also other plugins for synchronizing changes such as Git integration, GitHub sync, and YAOS. However, they do not support mobile yet as of writing this plugin.

"Buy Me A Coffee"

Developer Documentation

For developers interested in contributing to FIT or understanding its architecture, comprehensive documentation is available in the docs/ directory in GitHub.

Acknowledgements

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Git
6 years ago by Vinzent, (Denis Olehov)
Integrate Git version control with automatic commit-and-sync and other advanced features in Obsidian.md
Enveloppe
4 years ago by Mara-Li
Enveloppe helps you to publish your notes on a GitHub repository from your Obsidian Vault, for free!
Github Copilot
2 years ago by Vasseur Pierre-Adrien
A bridge between Obsidian and Github Copilot
GitHub Sync
2 years ago by Kevin Chin
Sync Obsidian vault to personal GitHub
GitHub Gitless Sync
a year ago by Silvano Cerza
Sync a GitHub repository with vaults on different platforms without requiring git installation
Gist
5 years ago by Jun Lin
📒 Gist View for Obsidian(https://obsidian.md)
Share as Gist
4 years ago by timrogers
An Obsidian (https://obsidian.md/) plugin for sharing your notes as a GitHub gist - either privately or publicly.
GitHobs
2 years ago by GabAlpha and MarcoG
Use Obsidian as Github issue editor! A simple plugin to create Github issues directly from Obsidian with logic taken from Git
GitHub Embeds
3 years ago by Gino Valente
Embed GitHub issues, PRs, and code snippets directly in Obsidian
Publish and GitHub URL
4 years ago by kometenstaub
Copy or open the Obsidian Publish URL of a note. You can also open its Git commit history on GitHub.
Emo
3 years ago by yaleiyale
Use image/file hosting in Obsidian by clipboard or draging file. Obsidian 图床聚合 & Github上传器
GitHub Link
2 years ago by Nathonius
Save as Gist
4 years ago by ghedamat
Netwik
5 years ago by Boris Bondarenko
Show Diff
3 years ago by Ivan Lednev
Render Git diffs in Obsidian files
Git Url
3 years ago by khuongduy354
GitHub Issue Augmentation
3 years ago by samprintz
Seafile
2 years ago by conql
Git Integration
2 years ago by noradroid
Obsidian plugin to add git integration
Gistr
2 years ago by Aetherinox
Obsidian.md plugin which allows you to use your notes to embed, create, and update gists for Github and Opengist. Light & dark theme support, create / update public & private gists either manually or with autosave.
GitHub Integration
a year ago by Kirill Zhuravlev
Plugin that fetch your github stars into notes
MrDoc
6 months ago by zmister
An Obsidian plugin for MrDoc that enables two-way synchronization between local Obsidian documents and MrDoc.一个 Obsidian 的 MrDoc 插件,用于 Obsidian 本地文档与 MrDoc 的双向同步
Simple File Push
2 years ago by Kim Hudaya
Simple file push blog plugin
Cicada Synchronizer
2 years ago by Adapole, Adapole, Mahyar Mirrashed
Github Issues
9 months ago by LonoxX
An Obsidian plugin that integrates with GitHub to track issues and pull requests directly in your vault.
Import GitHub Readme
2 years ago by Chasebank87
Git Changelog
a year ago by shumadrid
An Obsidian plugin that displays changelogs of the entire vault and individual files in the sidebar by utilizing Git commit history
Rsync
a year ago by Ganapathy Raman
An Obsidian plugin to perform sync files between machines using Rsync
Vault to blog
2 years ago by barkstone2
Automation tool of making react SPA blog by obsidian vault.
NotePix
8 months ago by Ayush Parkara
NotePix automatically uploads images, screenshots from your Obsidian vault to a designated GitHub repository. It then seamlessly replaces the local link with a fast URL, keeping your vault lightweight and portable.
GitHub Stars
a year ago by Flying Nobita
Obsidian plugin that displays GitHub star ⭐ counts next to repository links in your notes, in Reading View, Live Preview, and embedded markdown.
Open in GitHub
a year ago by Muurphy Chen
This is an Obsidian plugin designed to open project or files directly in GitHub via your browser.
GitHub Tasks
8 months ago by Mike Thicke
Obsidian plugin to sync GitHub issues and PRs to Obsidian TODOs
GitHub Tracker
a year ago by schaier-io
GH Links Shortener
6 months ago by David Barnett
Obsidian plugin to set shortened link text for pasted GitHub URLs