Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Tiny Dragger

LiShaochengLiShaocheng29 downloads

Drag and rearrange Markdown blocks inside a note.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates2

English | 中文

Tiny Dragger is an Obsidian desktop plugin that rearranges Markdown blocks inside the current file. Hover a block to show a gutter handle, drag to move or nest it, and click the handle for convert / copy / cut / delete. It does not drag between files.

Block detection, moves, indent, and basic type conversion use the MIT md-dragger engine (the same domain as Dragger). Handles, menus, native multi-block selection, settings, and translations are implemented in this plugin.

  • Display name: Tiny Dragger
  • Plugin ID: tiny-dragger
  • Minimum Obsidian version: 1.13.0
  • License: GPL-3.0 (the md-dragger dependency is MIT)
  • UI language: Follows the Obsidian app language. Codes starting with zh show Simplified Chinese. All other languages show English.

Install

In Obsidian, open Settings → Community plugins, search for Tiny Dragger, then install and enable it. Desktop only.

To skip the community directory or install a development build, see “Build from source” at the end.

Usage

Works in Source mode and Live Preview. Reading view has no handles.

Handle

Hover a block. A four-dot handle appears over the left gutter (it does not shrink the text column):

  • Click the dots to open the block menu. The handle stays on that block until the menu closes.
  • Press and drag the dots to move the block.

Drag

  • Single block: do not select text. Hover the four dots, hold the left button, and drag.
  • Multiple blocks: select the text of several blocks with the editor’s native selection, then drag from the four-dot handle of a block inside that selection. Dragging from a handle outside the selection moves only that one block.
  • Lists: each list row moves on its own. Nested children are not taken unless you select those rows too. Selecting several nested rows (for example three indented items) moves them together.
  • Nesting: while dragging lists, quotes, or callouts, move horizontally to change indent. The drop guide shifts with the target indent. A mostly vertical drag keeps the original indent.
  • Press Escape to cancel.

Block menu

Click the four dots (without dragging) to convert, copy, cut, or delete. Convert targets are paragraph, H1–H6, bulleted / numbered / task list, quote, [!info] / [!warning] / [!danger] / [!example], code block, or math block — with copy / cut / delete below a separator. Same-type conversions do nothing. When a multi-block native selection includes the gripped block, these actions apply to that whole payload (same rules as drag); otherwise they apply only to the gripped block.

Settings

Under Obsidian Settings → Tiny Dragger:

Setting Description Default
Handle color Theme accent, or a custom color picker Theme
Handle size 12–28 px, step 2 20
Handle horizontal offset −20 to 20 px 0

Known limits

  • Desktop only. No handles in reading view or on mobile.
  • Block boundaries follow md-dragger and may not match Live Preview widgets exactly.
  • Inline $…$ math is not a block. YAML frontmatter is not draggable.
  • No cross-file or cross-pane dragging.

Development

For people who change the code, install locally, or publish a release. Plugin users can skip this chapter.

Build from source

Requires Node.js. On Windows, run this in Git Bash or WSL (PowerShell cannot run ./build.sh directly).

git clone https://github.com/exbob/obsidian-tiny-dragger.git
cd obsidian-tiny-dragger
npm install
./build.sh

Then copy tiny-dragger/ into the vault at .obsidian/plugins/tiny-dragger/. That directory contains main.js, manifest.json, and styles.css. Enable Tiny Dragger under Settings → Community plugins.

./build.sh clean only deletes main.js, main.js.map (if present), and ./tiny-dragger/. It does not build. ./build.sh and bash build.sh are the same.

Develop and check

npm run dev       # watch source and rebuild
npm test          # unit tests
npx tsc --noEmit  # typecheck
npm run build     # production build (writes main.js at the repo root only)
./build.sh        # production build and write tiny-dragger/

Publish a new version

Bump version in manifest.json and package.json, add the mapping in versions.json, push, and create a GitHub Release from tiny-dragger/’s main.js, manifest.json, and styles.css. The release tag must match the version exactly (for example 1.0.0, with no v prefix). See the Obsidian plugin publishing docs.

Project layout

build.sh
esbuild.config.mjs
manifest.json
styles.css
tiny-dragger/          # install directory to copy into a vault
src/
  main.ts
  settings.ts
  constants.ts
  i18n/
  engine/              # md-dragger wrappers
  services/            # editor host, drag session
  ui/                  # gutter, menu, settings
tests/
docs/superpowers/specs/
HealthExcellent
ReviewSatisfactory
About
Rearrange Markdown blocks inside the current file using a four-dot gutter handle that appears on hover. Drag to move or change nesting, select multiple blocks to move together, and click the handle to convert, copy, cut, or delete blocks. Use on desktop in Source mode or Live Preview; reading view has no handles.
OutliningEditing
Details
Current version
1.1.0
Last updated
4 days ago
Created
2 weeks ago
Updates
2 releases
Downloads
29
Compatible with
Obsidian 1.13.0+
Platforms
Desktop only
License
GPL-3.0
Report bugRequest featureReport plugin
Author
LiShaochengLiShaochengexbob
shaocheng.li
GitHubexbob
  1. Community
  2. Plugins
  3. Outlining
  4. Tiny Dragger

Related plugins

Outliner

Work with your lists like in Workflowy or Roam Research.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Advanced Tables

Improved table navigation, formatting, and manipulation.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)

Editing Toolbar

The Editing Toolbar is modified from cMenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.

Hover Editor

Transform the Page Preview hover popover into a fully working editor instance.

Sort and Permute lines

Sort and Permute lines in whole file or selection.

Creases

Tools for effectively folding Markdown sections.

Various Complements

Complete words similar to auto-completion in an IDE.