TEXT
CASE Converter
Convert text between UPPERCASE, lowercase, Title Case, camelCase, snake_case, and more.
0 characters · 0 words
Developer Reference
Core Algorithm & Standalone Script
Standalone, zero-dependency JavaScript implementation powering this tool. Free to inspect, copy, and build upon.
let currentFn = 'upper';
function words(text) {
return text.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/[_\-\.]+/g, ' ')
.trim().split(/\s+/).filter(Boolean);
}
const converters = {
upper: t => t.toUpperCase(),
lower: t => t.toLowerCase(),
title: t => t.replace(/\w\S*/g, w => w[0].toUpperCase() + w.slice(1).toLowerCase()),
sentence: t => {
return t.toLowerCase().replace(/(^\s*|[.!?]\s+)(\w)/g, (m, p, c) => p + c.toUpperCase());
},
camel: t => {
const w = words(t);
return w.map((s, i) => i === 0 ? s.toLowerCase() : s[0].toUpperCase() + s.slice(1).toLowerCase()).join('');
},
pascal: t => words(t).map(s => s[0].toUpperCase() + s.slice(1).toLowerCase()).join(''),
snake: t => words(t).map(s => s.toLowerCase()).join('_'),
kebab: t => words(t).map(s => s.toLowerCase()).join('-'),
constant: t => words(t).map(s => s.toUpperCase()).join('_'),
dot: t => words(t).map(s => s.toLowerCase()).join('.'),
};
function convert() {
const text = document.getElementById('inp').value;
document.getElementById('output').textContent = converters[currentFn](text);
document.getElementById('char-count').textContent = text.length;
document.getElementById('word-count').textContent = text.trim() ? text.trim().split(/\s+/).length : 0;
}
document.querySelectorAll('#conv-group .toggle-item').forEach(b => {
b.addEventListener('click', () => {
document.querySelectorAll('#conv-group .toggle-item').forEach(x => x.classList.remove('active'));
b.classList.add('active');
currentFn = b.dataset.fn;
convert();
});
});
document.getElementById('inp').addEventListener('input', convert);
document.getElementById('copy-btn').addEventListener('click', function() {
navigator.clipboard.writeText(document.getElementById('output').textContent);
this.textContent = 'Copied'; this.classList.add('copied');
setTimeout(() => { this.textContent = 'Copy'; this.classList.remove('copied'); }, 1500);
});
convert();