Connection errors

This appears when the plugin cannot reach your R2 bucket. Common causes:

  • The Endpoint URL is wrong or missing. It must follow the format https://<account-id>.r2.cloudflarestorage.com — do not include the bucket name here.
  • The Access Key ID or Secret Access Key was copied incorrectly. Try re-entering them.
  • The API token does not have Object Read & Write permission on the correct bucket.
  • The bucket name in the settings does not match what you created in Cloudflare.
The endpoint URL does not end with the bucket name. The bucket name is entered in the separate Bucket field.

A 403 means the credentials are valid but the token lacks permission to access the bucket. Check that:

  • The token was created with Object Read & Write (not Admin or read-only).
  • The token is scoped to the correct bucket — "All buckets" or the specific bucket you named.
  • The token has not been revoked in Cloudflare.

The bucket name entered in SSS settings does not match an existing bucket in your Cloudflare account. Verify the exact name — it is case-sensitive.


Encryption errors

This means the password you entered does not match the one used to encrypt the remote files. Possible causes:

  • You changed the password in settings after already syncing. The remote files were encrypted with the old password.
  • You are on a new device and the password was entered with a typo.
  • The encryption method does not match what was used originally (e.g., OpenSSL vs rclone).
If you changed the password, you must re-upload all files with the new password. The safest approach: clear remote files, reset sync history (Danger Zone), then sync again.

If files download but open as garbled text, the decryption failed silently. Most common reason: the encryption method on this device differs from the device that uploaded them. Check both devices have the same method set (OpenSSL or rclone).


Sync behaviour

This is expected and intentional. When the same file was edited on two devices without syncing in between, SSS detects a conflict. The winning version is written to the original path; the losing version is saved with a .conflict suffix so nothing is discarded.

Review the conflict file, merge any changes manually if needed, then delete the .conflict copy.

To reduce conflicts: keep Smart Sync enabled on all devices so changes propagate quickly.

Smart Sync fires after you stop typing for the configured idle time (default 7 seconds). If nothing is happening:

  • Make sure you are actually editing a file inside the vault (not just viewing).
  • Check that the plugin is enabled and settings were saved.
  • Try a manual sync by clicking the ribbon icon. If that works, Smart Sync is correctly configured — the idle trigger just hasn't fired yet.
  • Open the Obsidian developer console (Ctrl+Shift+I) and look for any [SSS] errors.

SSS uses a local database to track what was last synced. If this database is missing or was reset, the next sync compares everything from scratch. This is normal after:

  • Using Reset Sync History in the Danger Zone.
  • Moving the vault to a new location.
  • Reinstalling Obsidian or the plugin.

One full re-sync is expected in these situations. After it completes, subsequent syncs will only transfer changed files.

Files can be skipped for several reasons:

  • They match a pattern in your Ignore Paths list.
  • They exceed the Max File Size limit you configured.
  • They are inside .obsidian/ and Sync Config Dir is disabled.
  • The sync direction is set to Push Only or Pull Only, limiting which files move.

Use the Dry Run command (command palette → "Dry run") to see exactly which files would be synced or skipped before committing.


Device pairing

The pairing system uses a lightweight relay server to transfer credentials end-to-end encrypted. Failures usually mean:

  • The code has expired — pairing codes are valid for 10 minutes. Generate a new one.
  • The code was entered incorrectly. It is case-insensitive but must match exactly.
  • The relay server is temporarily unreachable. Wait a moment and try again.

If you consistently cannot use the relay, you can enter credentials manually on the new device instead.


Reading the logs

If you are stuck, the developer console is the most useful tool. In Obsidian, open it with Ctrl+Shift+I (Windows/Linux) or Cmd+Option+I (macOS). Filter by [SSS] to see only plugin messages.

Set Log Level to Debug in SSS Advanced settings for maximum detail. Copy the relevant lines when opening a GitHub issue — it speeds up diagnosis considerably.

Dry run before reset — Before using Reset Sync History or any destructive action, run a Dry Run to confirm what the next sync would do.

Still stuck? Open an issue on GitHub with your log output and a description of the problem. Include your OS, Obsidian version, and plugin version.