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();