A developer text utility tool with 115 executable scripts accessible via a command palette. Available as a web app, VS Code extension, and terminal CLI. Paste text, run a script, get transformed output. Think "Swiss Army knife for text transformations."
Try it: flxify.dev | Install CLI: npm i -g @flxify/cli
- 115 scripts for JSON formatting, Base64 encoding, hashing, case conversion, sorting, and more
- Command palette (Cmd/Ctrl+B) with fuzzy search
- Syntax highlighting with automatic language detection (JSON, HTML, CSS, Python, YAML, SQL, etc.)
- 6 themes — Standard Dark/Light, Cyber Neon, Nordic Frost, Monokai Pro, OLED Stealth
- Category chips bar for one-click browsing by category (Formatting, Encoding, Generators, etc.)
- Wide-screen sidebar (≥1200px) with search and accordion-grouped script browser
- First-visit onboarding tour — guided walkthrough of the palette, categories, and sidebar
- Works offline after first load — no server required, works from
file://URLs - 100% client-side — your data never leaves your browser
- VS Code extension with the same 115 scripts
- Terminal CLI (
@flxify/cli) with Vim keybindings
Visit flxify.dev, paste your text, and press Cmd/Ctrl+B to open the command palette.
npm install -g @flxify/cli
flxify # launch editor
flxify file.txt # open a fileVim keybindings, command palette (Ctrl+B), 6 themes (Ctrl+T), and all 115 scripts. See tui/README.md for full docs.
Install from the VS Code Marketplace, then run Flxify: Run Script from the command palette.
git clone https://github.com/ahmedeltaweel/flxify.git
cd flxify
npm install
npm run build # generates app.js + tool pages
npm test # runs 827 testsOpen index.html in a browser — no web server needed.
Every script receives a BoopState object. The state.text property automatically handles selection vs full-document mode:
/**
{
"api": 1,
"name": "My Script",
"description": "What it does",
"author": "Your Name",
"icon": "icon-name",
"tags": "search,terms"
}
**/
function main(state) {
state.text = state.text.toUpperCase();
}Transform text:
function main(state) {
state.text = state.text.split('').reverse().join('');
}Report info without modifying text:
function main(state) {
state.postInfo(state.text.length + ' characters');
}Generate new content:
function main(state) {
var result = generateSomething();
if (state.isSelection) {
state.text = result;
} else {
state.insert(result);
}
}Handle errors:
function main(state) {
try {
state.text = JSON.stringify(JSON.parse(state.text), null, 2);
} catch (e) {
state.postError("Invalid JSON");
}
}See SCRIPTS.md for a complete reference of all 115 scripts organized by category.
See CONTRIBUTING.md for guidelines on adding scripts, writing tests, and submitting pull requests.