Bonar.Gibberish 1.0.2

dotnet add package Bonar.Gibberish --version 1.0.2
                    
NuGet\Install-Package Bonar.Gibberish -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bonar.Gibberish" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bonar.Gibberish" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="Bonar.Gibberish" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bonar.Gibberish --version 1.0.2
                    
#r "nuget: Bonar.Gibberish, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bonar.Gibberish@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bonar.Gibberish&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=Bonar.Gibberish&version=1.0.2
                    
Install as a Cake Tool

Gibberish

A .NET library tool that turns readable Latin text into unreadable gibberish. It applies a sequence of substitution ciphers: shuffle letters, shuffle punctuation, then optionally map the Latin alphabet onto another script (Georgian or Thai).

This is a fun obfuscation tool, not encryption. Do not use it to protect secrets.

What it does

Given a string, Gibberish can:

  1. Change capitalization — leave as-is, force uppercase, or force lowercase.
  2. Shuffle letters — remap Latin letters using a random permutation.
  3. Shuffle punctuation — remap a standard set of punctuation characters.
  4. Replace the character set — map A–Z / a–z onto Georgian or Thai glyphs so the result looks like another script.

Transforms run in that order. Each step is independently configurable, so you can shuffle letters without touching punctuation, replace the script without shuffling, and so on.

Whitespace, digits, and characters outside the Latin alphabet / configured punctuation set are left unchanged.

Random vs Shuffle

Letter and punctuation transforms each have two permutation modes:

Mode What gets remapped
Random The full alphabet (or full punctuation set) is shuffled, then applied as a cipher. Characters that do not appear in the input can still appear in the output.
Shuffle Only the distinct characters that actually appear in the input are shuffled among themselves. The output uses the same character inventory as the input.
None Skip that transform.

Requirements

Library usage

Add a project reference to Gibberish, then call the ToGibberish() extension method:

using Gibberish;
using Gibberish.Enums;

// Defaults: random letter shuffle, random punctuation shuffle, Georgian replacement
var output = "Hello, World!".ToGibberish();

// Customize each transform
var formatter = new GibberishFormatter
{
    CapitalizationBehavior = CapitalizationBehavior.Lower,
    LetterOrderBehavior = LetterOrderBehavior.Shuffle,
    PunctuationOrderBehavior = PunctuationOrderBehavior.None,
    CharacterSetReplacementBehavior = CharacterSetReplacementBehavior.Thai
};

var thaiGibberish = "Hello, World!".ToGibberish(formatter);

ToGibberish throws ArgumentNullException if the input string is null. An empty string is valid and returns empty.

Default formatter

When you call ToGibberish() with no arguments, the library uses:

Setting Default
LetterOrderBehavior Random
PunctuationOrderBehavior Random
CharacterSetReplacementBehavior Georgian
CapitalizationBehavior None

Formatter options

CapitalizationBehavior
Value Effect
None Leave casing as written
Upper Convert the entire string to uppercase first
Lower Convert the entire string to lowercase first

Applied before letter shuffling, so a later cipher still sees the cased text.

LetterOrderBehavior
Value Effect
None Leave Latin letters in place
Random Shuffle A–Z and a–z independently, then substitute
Shuffle Shuffle only the Latin letters present in the input

Uppercase and lowercase are treated as separate alphabets in Random mode.

PunctuationOrderBehavior
Value Effect
None Leave punctuation in place
Random Shuffle the full punctuation set, then substitute
Shuffle Shuffle only the punctuation characters present in the input

The standard punctuation set is:

; : , " . ? ' % $ \ / < > * & ^ # @ ! = - _ +
CharacterSetReplacementBehavior
Value Effect
None Keep Latin letters
Thai Map the Latin alphabet onto Thai characters (U+0E01–U+0E34)
Georgian Map the Latin alphabet onto Georgian characters (U+10A0–U+10C4, U+10D0–U+10DF)

This runs last, so shuffled Latin letters are what get mapped onto the target script.

Custom character data

The cipher tables come from ICharacterData. Pass your own implementation to control alphabets, punctuation, or replacement scripts (useful in tests):

var output = input.ToGibberish(formatter, myCharacterData);

The built-in CharacterData class supplies Latin A–Z / a–z, the punctuation list above, and the Thai / Georgian replacement sets.

Command-line tool

GibberishConsole reads a text file, transforms it, and writes a sibling file named <original> - gibberish<ext>. If that path already exists, it appends a number ( - gibberish 1, - gibberish 2, …).

# From the repo root
dotnet run --project GibberishConsole -- input.txt

# Also print the result to stdout
dotnet run --project GibberishConsole -- input.txt --render

# Control each transform
dotnet run --project GibberishConsole -- input.txt \
  --capitalization lower \
  --letter shuffle \
  --punctuation none \
  --characterSet thai

Options

Option Values Description
<target> file path Input file (required; first argument)
--output path Write to this path instead of the default sibling file
--render flag Also write the transformed text to the console
--capitalization none, upper, lower Casing transform
--letter none, random, shuffle Letter shuffle mode
--punctuation none, random, shuffle Punctuation shuffle mode
--characterSet none, thai, georgian Script replacement

Show the same help locally:

dotnet run --project GibberishConsole -- --help

Omitted options use the library defaults listed above.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 104 9/2/2026