String Manipulation

Compatible with: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion GoLand DataGrip Rider MPS Android Studio
Oct 10, 2018
598 467

Provides actions for text manipulation:

  • Toggle style (camelCase, kebab-lowercase, KEBAB-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE,, words lowercase, Words Capitalized, PascalCase)
  • To lower case
  • To SCREAMING_SNAKE_CASE (or to camelCase)
  • To snake_case (or to camelCase)
  • To (or to camelCase)
  • To kebab-case (or to camelCase)
  • To kebab-case (or to snake_case)
  • To camelCase (Or To Words)
  • To camelCase (or to lowercase words)
  • To PascalCase (or to camelCase)
  • Capitalize selected text
  • Invert case
-when nothing is selected, then either nothing or whole line or a particular element is selected - report an issue if you find something to improve, each file type needs its own implementation to work flawlessly.


  • Un/Escape selected Java text
  • Un/Escape selected JavaScript text
  • Un/Escape selected HTML text
  • Un/Escape selected XML text
  • Un/Escape selected SQL text
  • Un/Escape selected PHP text
  • Convert diacritics(accents) to ASCII
  • Convert non ASCII to escaped Unicode
  • Convert escaped Unicode to String


  • Encode selected text to MD5 Hex16
  • De/Encode selected text as URL
  • De/Encode selected text to Base64


  • Increment/decrement all numbers found.
  • Duplicate line and increment/decrement all numbers found.
  • Create sequence - Keep first number, replace all other by incrementing
  • Increment duplicate numbers

Sort with natural order:

  • Reversing order of lines
  • Shuffle lines
  • Sort case-sensitive A-z
  • Sort case-sensitive z-A
  • Sort case-insensitive A-Z
  • Sort case-insensitive Z-A
  • Sort line length asc., desc.
  • Sort hexadecimally
  • Sort lines by subselection - only one selection/caret per line is handled


  • Format selected text to columns/table by a chosen separator/delimiter
  • Align text to left/center/right


  • Grep selected text, All lines not matching input text wil be removed. (Does not work in column mode)
  • Inverted Grep
  • Trim selected text
  • Trim all spaces in selected text
  • Remove all spaces in selected text
  • Remove duplicate lines
  • Keep only duplicate lines
  • Remove empty lines
  • Remove all newlines


  • Swap Characters/Selections/Lines/Tokens
  • Swap single quote to double quotes
  • Switch file path separators: Windows<->UNIX

Actions are available under Edit menu, or via the shortcut "alt M" and "alt shift M". You can setup your own shortcuts for better usability or customize the popup in File | Settings | Appearance & Behavior | Menus and Toolbars.

Donations are welcomed.

Recent change notes

Version 6.1
  • 'Remove duplicate lines' fixed for multi caret selection
  • Added hexadecimal sorting
  • Added separate popup for switching cases
  • Customizable popup via File | Settings | Appearance & Behavior | Menus and Toolbars
Version 6.0
  • Popup enabled in dialogs and other popups (only not for Alt+M - because it would conflict with mnemonics)
  • Added: Repeat last action
  • Added: Swap single quote to double quote
  • Align by column: added history, option to align by separators or values
  • Fixed: Incrementing/decrementing long literals removes the 'L' after the number
Version 5.9
  • Menu icons
  • Renamed hyphen-case to kebab-case according to current standards
Version 5.8
  • Added 'Inverted Grep'
  • Added 'To UPPER CASE'
  • Added 'To lower case'
  • Fixed 'Switch Case' for "Foo"
Version 5.7
  • Align to Columns improvements
Version 5.6
  • Sort lines by subselection fix
Version 5.5
  • Removed action: Capitalize Fully
  • Added action: Keep only duplicates
  • Added action: Invert case
  • Added action: To camelCase (or to lowercase words)
  • Added action: Encode/Decode URL according to RFC 3986 (space character as %20 instead of +, using org.springframework.web.util.UriUtils 4.3.9.RELEASE)
Version 5.4
  • Sorting order fix
  • Fixed: Find in Path Dialog shows the popup
  • Fixed: Style converting - special characters will not be converted
Version 5.3
  • Introduced one generic Sort action
  • IntelliJ 2017 compatibility
Version 5.2
  • replaced Swap Characters with a new action: Swap Characters/Selections/Lines/Tokens - depending on what is selected or how many carets there are
Version 5.1
  • new action: Remove all newlines
Version 5.0
  • Added String Manipulation actions to Editor Context Menu
Version 4.9
  • toggle case actions fix: removed separator between upper case letters, separators after digits made consistent
Version 4.8
  • new action: Switch file path separators: Windows<->UNIX
  • new action: Shuffle lines
  • new action: Sort lines by subselection
Version 4.7
  • new action: dIncrement numbers ( uplicate"1 3 3" => "1 3 4")
  • replaced 'Increment to produce unique sequence' to 'Create Sequence' ("1 5 0" => "1 2 3")
  • Added Base64 options for URL safe, chunked encoding and charset
  • Fixed multiline Base64 encoding
  • Auto-selection of the whole line will not select the 'new line' character on the end of the line
  • Case converting: #14 NoClassDefFoundError fix for WebStorm
  • Case converting: improved auto selection handling
Version 4.6
  • IntelliJ 2016.2 EAP compatibility
Version 4.5
  • new action: Increment to produce unique sequence of numbers ("0 0 0" => "1 2 3")
Version 4.4
  • fixed AssertionError: Wrong line separators
Version 4.3
  • added action: Align to left/center/right
  • added action: Convert diacritics(accents) to ASCII
  • added action: Sorting with natural ordering
Version 4.2
  • added PascalCase support
Version 4.1
  • fixed converting with numbers (now: v2Counter -> V2_COUNTER, _2_v2_Counter_3 -> 2_V2_COUNTER_3)
Version 4.0
  • smarter selecting for case converting actions - when nothing is selected, then either a whole line or a particular element is selected - report an issue if you find something to improve, each file type needs its own implementation to work flawlessly.
  • fixed whole bunch of edge cases for case converting actions
  • new action: Increment/decrement all numbers found
  • too many actions, introduced new subgroups
Version 3.3
  • new action: Remove duplicate lines
  • new action: Format selected text to columns/table by a chosen separator/delimiter
Version 3.2
  • Renamed and added more case converting actions
Version 3.1
  • Improved converting to camelCase and CONSTANT_CASE
Version 3.0
  • Popup(Alt+M) disabled when refactoring popups are visible
Version 2.9
  • To camel case fixed for a lower case word.
Version 2.8
  • Added properties style action
Version 2.7
  • Improved constant and camel case actions
  • Added hyphen case action
  • Added action for switching between all styles (camelCase, hyphen, underscore, words)

Version 2.6
  • Line break fix

  • Multiple Selections support

Version 2.4
  • Fixed bug: if end-of-line was selected as last character, then it was removed
  • Disabled default shortcut for swap characters
  • New actions for PHP escaping

Version 2.3
  • Fixed: Convert escaped Unicode to String

Version 2.2
  • Increment/Decrement improvements
  • Popup menu works during indexing

Version 2.1.1
  • Swap Characters - bugfix

Version 2.1
  • Alt+A - Exchange two selected characters, or ones surrounding the cursor if no selection

Version 2.0 - Resurrection of the plugin
  • Column selection fix
  • Enabled for all IDEs
  • Fixed Escaped Unicode to String action
  • New action: Capitalize
  • New action: Capitalize Fully
  • New action: Decode Url
  • Added shortcut Alt+M for popup opening
  • Improved actions shortcuts in the popup

Version 1.3
  • Fixed a bug in duplicate and increment actions when line contains '.' and 'e'
  • Fixed exception when clicking cancel on grep dialog
  • Grep action now warns when no text is selected

Version 1.2 New features:
  • Convert non ASCII to escaped Unicode
  • Convert escaped Unicode to String
  • Remove empty lines
  • Duplicate and decrement numbers in a text
  • Now works since IDEA 7.0 (build 7361)
  • To camel case, now put the first letter on lowercase.

Version 1.1 Added following actions:
  • Encode to MD5 Hex16
  • Encode URL
  • De/Encode to Base64
  • Escape SQL
  • Escape XML
  • To Camel case
  • To Constant case
Duplicate and increment now handles float number which ends with "."