A .NET library, CLI tool, and desktop application for working with various wiki formats.
- WikidPad Support: Read and parse WikidPad
.wikifiles - Obsidian Support: Read and parse Obsidian
.mdfiles - Markdown Wiki Support: Read and parse using Markdown links
- Format Conversion: Convert between wikis - WikidPad to Obsidian done.
- CLI Tool: Command-line interface for easy conversions
- Desktop GUI: Cross-platform Avalonia-based desktop application - Converter done
- .NET 10.0 SDK
For GUI development and testing on your actual wikis, use distrobox:
# Create container
./.distrobox/create-container.sh
# Enter container
distrobox enter dotnetbox
# Run setup script
./.distrobox/setup.sh
# Optional: Install VS Code inside container (recommended)
./.distrobox/install-vscode.shThe VS Code installation script installs VS Code inside the container and exports it to your host, giving you full access to .NET SDK and all development tools
Open this repository in VS Code with the Dev Containers extension, or use GitHub Codespaces.
Install .NET 10.0 SDK on your system directly.
dotnet restore
dotnet builddotnet testRun the GUI application:
dotnet run --project src/WikiTool.DesktopThe desktop application provides a visual interface for converting WikidPad wikis to Obsidian format:
- Browse for source WikidPad folder
- Browse for destination Obsidian folder
- Options: Toggle category tag conversion
- Convert button to start the conversion
- Live progress indicator during conversion
- Conversion log showing results and any errors
The GUI is built with Avalonia and runs cross-platform on Windows, Linux, and macOS.
Convert a WikidPad wiki to Obsidian format:
dotnet run --project src/WikiTool.CLI -- convert \
--from wikidpad \
--to obsidian \
--source /path/to/wikidpad \
--dest /path/to/obsidianOr using short aliases:
dotnet run --project src/WikiTool.CLI -- convert \
-f wikidpad \
-t obsidian \
-s /path/to/wikidpad \
-d /path/to/obsidianThe converter handles the following WikidPad syntax:
| WikidPad Format | Obsidian Format | Example |
|---|---|---|
| Headers | Markdown headers | + Header → # Header |
| Bare WikiWords | Double brackets | WikiWord → [[WikiWord]] |
| Single bracket links | Double brackets | [Link with Spaces] → [[Link with Spaces]] |
| Tags | Hashtags | [tag:example] → #example |
| Categories (opt-in) | Hashtags | CategoryName → #Name |
| Attributes | Obsidian attributes | [author: John] → [author:: John] |
| Aliases | YAML frontmatter | [alias:Name] → aliases: in frontmatter |
| File extension | Markdown | .wiki → .md |
Notes:
- WikidPad automatically links CamelCase words (WikiWords) without any brackets. Links with spaces or non-CamelCase text use single square brackets
[like this]. The converter transforms both formats to Obsidian's double-bracket syntax[[like this]]. - Only WikiWords starting with uppercase are converted (e.g.,
WikiWordbut notcamelCaseoriPhone). - WikidPad special attributes like
[icon=date]are preserved unchanged. - Category conversion is disabled by default. Enable with
--convert-categoriesflag orConvertCategoryTags = true.
WikidPad aliases are converted to Obsidian YAML frontmatter:
Input (WikidPad):
[alias:FirstAlias] [alias:SecondAlias]
+ My Page
Content here
Output (Obsidian):
---
aliases:
- FirstAlias
- SecondAlias
---
# My Page
Content hereusing WikiTool;
using WikiTool.Converters;
// Read a WikidPad wiki
var wiki = new WikidpadWiki("/path/to/wikidpad");
var pages = wiki.GetAllPages();
// Convert to Obsidian
var converter = new WikidPadToObsidianConverter(
"/path/to/wikidpad",
"/path/to/obsidian"
);
// Optional: Enable Category to hashtag conversion (disabled by default)
converter.ConvertCategoryTags = true;
converter.ConvertAll();WikiTool/
├── src/
│ ├── WikiTool/ # Core library
│ │ ├── Pages/ # Page implementations
│ │ ├── Wikis/ # Wiki implementations
│ │ └── Converters/ # Format converters
│ ├── WikiTool.CLI/ # Command-line interface
│ └── WikiTool.Desktop/ # Avalonia desktop GUI
│ ├── Services/ # UI services (folder picker, etc.)
│ ├── ViewModels/ # MVVM ViewModels
│ └── Views/ # XAML views
├── tests/
│ └── WikiTool.Tests/ # Unit tests
├── docs/ # Documentation
└── .distrobox/ # Distrobox development environment
See LICENSE file for details.