Developer Toolbox

Free, browser-based utilities for computer science students and developers. Every tool runs entirely in your browser, and nothing you type is ever sent anywhere.

๐Ÿ”ข

Number Base Converter

Type in any field and the others update live. Handles huge integers and negatives.

๐Ÿงฎ

Bitwise Calculator

Inputs accept decimal, hex (0x2f), or binary (0b101).

Result (binary)
Hex
Unsigned
Signed (two's complement)
๐Ÿ“ฑ

QR Code Generator

Generated locally, perfect for URLs, Wi-Fi strings, or contact info.

๐Ÿ”ค

Text โ‡„ ASCII / Unicode

Convert text to character codes and back.

Decimal codes
Hex codes
Binary codes
Decoded text
๐Ÿ”

Hash Generator

Cryptographic digests of any text, computed as you type.

SHA-256
SHA-1
SHA-512

๐Ÿ“ฆ

Base64 Encode / Decode

UTF-8 safe: emoji and accents survive the round trip.

๐ŸŒ

URL Encode / Decode

Percent-encoding for query strings and URL components.

โฑ๏ธ

Unix Timestamp Converter

Epoch seconds or milliseconds โ‡„ human-readable dates.

Current Unix time
Local time
UTC / ISO 8601
Seconds
Milliseconds
๐Ÿงพ

JSON Formatter & Validator

Pretty-print, minify, and validate JSON.

๐Ÿ†”

UUID v4 Generator

Cryptographically random universally-unique identifiers.

๐ŸŽจ

Color Converter

HEX โ‡„ RGB โ‡„ HSL, with a live swatch.

The eyedropper can sample any pixel on your screen, even outside the browser. Needs Chrome or Edge on HTTPS/localhost; elsewhere, the color swatch's built-in picker also has an eyedropper.

RGB
HSL
๐Ÿ“š

Language Cheat Sheets

Core syntax at a glance: JavaScript, C++, Python, HTML, and CSS.

// โ”€โ”€ Variables & types โ”€โ”€
let count = 5;                 // block-scoped, reassignable
const PI = 3.14159;            // block-scoped, constant
typeof count;                  // "number"; also: string, boolean, object, undefined, bigint

// โ”€โ”€ Strings โ”€โ”€
const name = "Justin";
`Hello ${name}, 1 + 2 = ${1 + 2}`      // template literal (backticks)
"abcdef".length                        // 6
"abc".toUpperCase() .includes("b") .slice(0, 2) .split(",")

// โ”€โ”€ Arrays โ”€โ”€
const a = [1, 2, 3];
a.push(4);  a.pop();  a.shift();  a.unshift(0);
a.map(x => x * 2)                      // [2, 4, 6]  transform each
a.filter(x => x > 1)                   // keep matching
a.reduce((sum, x) => sum + x, 0)       // fold to one value
a.find(x => x > 1)  a.includes(2)  a.sort((p, q) => p - q)

// โ”€โ”€ Objects, destructuring, spread โ”€โ”€
const user = { name: "J", age: 30 };
const { name: n, age } = user;         // pull fields out
const copy = { ...user, admin: true }; // shallow copy + extra field

// โ”€โ”€ Functions โ”€โ”€
function add(a, b = 0) { return a + b; }   // default parameter
const mul = (a, b) => a * b;               // arrow function

// โ”€โ”€ Control flow โ”€โ”€
if (x > 0) { } else if (x === 0) { } else { }     // === checks type too
for (let i = 0; i < 10; i++) { }
for (const item of list) { }               // values
while (x > 0) { x--; }

// โ”€โ”€ Classes โ”€โ”€
class Animal {
  constructor(name) { this.name = name; }
  speak() { return `${this.name} makes a sound`; }
}
class Dog extends Animal {
  speak() { return "Woof"; }               // override
}

// โ”€โ”€ Async / await โ”€โ”€
const res = await fetch("/api/data");
const data = await res.json();
try { await risky(); } catch (err) { console.error(err); }

// โ”€โ”€ DOM โ”€โ”€
const el = document.querySelector("#id, .class, tag");
el.addEventListener("click", (e) => { /* ... */ });
el.textContent = "hi";  el.classList.toggle("dark");
// โ”€โ”€ Program skeleton โ”€โ”€
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    // โ”€โ”€ Variables & types โ”€โ”€
    int n = 42;  double d = 3.14;  bool ok = true;
    char c = 'A';  string s = "hello";
    const int MAX = 100;           // constant
    auto total = n * 2;            // compiler deduces type

    // โ”€โ”€ Input / output โ”€โ”€
    cout << "Enter a number: ";
    cin >> n;
    cout << "You typed " << n << endl;

    // โ”€โ”€ Control flow โ”€โ”€
    if (n > 0) { } else if (n == 0) { } else { }
    for (int i = 0; i < 10; i++) { }
    while (n > 0) { n--; }
    switch (c) { case 'A': break; default: break; }

    // โ”€โ”€ Vectors (dynamic arrays) โ”€โ”€
    vector<int> v = {3, 1, 4};
    v.push_back(1);                // append
    v.size();  v[0];  v.at(0);     // .at() bounds-checks
    for (int x : v) cout << x;     // range-based for
    return 0;
}

// โ”€โ”€ Functions โ”€โ”€
int add(int a, int b = 0) { return a + b; }        // default arg
void swapRef(int &a, int &b) { int t = a; a = b; b = t; }  // pass by reference

// โ”€โ”€ Classes โ”€โ”€
class Animal {
public:
    Animal(string n) : name(n) {}                  // constructor + init list
    virtual string speak() { return name + " makes a sound"; }
private:
    string name;
};
class Dog : public Animal {                        // inheritance
public:
    Dog(string n) : Animal(n) {}
    string speak() override { return "Woof"; }
};

// โ”€โ”€ Pointers & references โ”€โ”€
int x = 5;
int* p = &x;      // p holds the address of x
*p = 7;           // dereference: x is now 7
int& r = x;       // reference: alias for x

// โ”€โ”€ Compile & run โ”€โ”€
// g++ -std=c++17 main.cpp -o main && ./main
# โ”€โ”€ Variables & types (dynamic) โ”€โ”€
n = 42;  pi = 3.14;  ok = True;  s = "hello"
type(n)                      # <class 'int'>

# โ”€โ”€ f-strings โ”€โ”€
name = "Justin"
print(f"Hello {name}, 1 + 2 = {1 + 2}")

# โ”€โ”€ Lists, tuples, dicts, sets โ”€โ”€
nums = [3, 1, 4]
nums.append(1);  nums.sort();  len(nums)
point = (3, 4)                        # tuple: immutable
user = {"name": "J", "age": 30}       # dict
user["name"];  user.get("email", "n/a")
seen = {1, 2, 3}                      # set: unique items

# โ”€โ”€ Slicing โ”€โ”€
nums[0]  nums[-1]  nums[1:3]  nums[::-1]   # last one reverses

# โ”€โ”€ Control flow (indentation matters!) โ”€โ”€
if n > 0:
    ...
elif n == 0:
    ...
else:
    ...
for x in nums:  print(x)
for i, x in enumerate(nums):  ...          # index + value
while n > 0:  n -= 1

# โ”€โ”€ Comprehensions โ”€โ”€
squares = [x**2 for x in range(10) if x % 2 == 0]
lookup  = {x: x**2 for x in range(5)}

# โ”€โ”€ Functions โ”€โ”€
def add(a, b=0, *args, **kwargs):
    """Docstring: what this function does."""
    return a + b

# โ”€โ”€ Classes โ”€โ”€
class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        return f"{self.name} makes a sound"

class Dog(Animal):                    # inheritance
    def speak(self):
        return "Woof"

# โ”€โ”€ Files & errors โ”€โ”€
with open("data.txt") as f:           # auto-closes the file
    text = f.read()
try:
    risky()
except ValueError as e:
    print(e)

# โ”€โ”€ Run โ”€โ”€
# python3 script.py
# venv: python3 -m venv .venv && source .venv/bin/activate
<!-- โ”€โ”€ Page skeleton โ”€โ”€ -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Page title</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <!-- โ”€โ”€ Text โ”€โ”€ -->
  <h1>Heading 1</h1>  ...down to h6
  <p>Paragraph with <strong>bold</strong>, <em>italic</em>, <code>code</code></p>
  <a href="https://example.com" target="_blank">Link</a>
  <img src="photo.jpg" alt="Describe the image" width="300">

  <!-- โ”€โ”€ Lists & tables โ”€โ”€ -->
  <ul><li>Bullet item</li></ul>
  <ol><li>Numbered item</li></ol>
  <table>
    <tr><th>Header</th></tr>
    <tr><td>Cell</td></tr>
  </table>

  <!-- โ”€โ”€ Semantic layout (use instead of div where possible) โ”€โ”€ -->
  <header> <nav> <main> <section> <article> <aside> <footer>

  <!-- โ”€โ”€ Forms โ”€โ”€ -->
  <form action="/submit" method="post">
    <label for="email">Email</label>
    <input type="email" id="email" name="email" required>
    <input type="checkbox">  <input type="radio">  <input type="number">
    <select><option>One</option></select>
    <textarea rows="4"></textarea>
    <button type="submit">Send</button>
  </form>

  <script src="app.js"></script>
</body>
</html>
/* โ”€โ”€ Selectors โ”€โ”€ */
p { }                /* every <p> element */
.card { }            /* class="card" */
#main { }            /* id="main" */
.card > p { }        /* direct child only */
.card p { }          /* any descendant */
a:hover, input:focus, li:first-child { }   /* pseudo-classes */

/* โ”€โ”€ Box model (outside โ†’ in: margin, border, padding, content) โ”€โ”€ */
.box {
  margin: 16px;              /* space outside the border */
  border: 1px solid #ccc;
  padding: 12px;             /* space inside the border */
  box-sizing: border-box;    /* width includes padding + border */
}

/* โ”€โ”€ Flexbox: one-dimensional layout โ”€โ”€ */
.row {
  display: flex;
  justify-content: space-between;   /* main axis */
  align-items: center;              /* cross axis */
  gap: 12px;
  flex-wrap: wrap;
}

/* โ”€โ”€ Grid: two-dimensional layout โ”€โ”€ */
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);   /* three equal columns */
  gap: 16px;
}

/* โ”€โ”€ Positioning โ”€โ”€ */
/* static (default) ยท relative ยท absolute ยท fixed ยท sticky */
.badge { position: absolute; top: 0; right: 0; }
/* absolute positions against the nearest non-static ancestor */

/* โ”€โ”€ Custom properties (variables) โ”€โ”€ */
:root { --brand: #2ecc71; }
.btn  { background: var(--brand); }

/* โ”€โ”€ Responsive โ”€โ”€ */
@media (max-width: 640px) {
  .row { flex-direction: column; }
}

/* โ”€โ”€ Units โ”€โ”€ */
/* px fixed ยท % of parent ยท rem multiple of root font size ยท vw/vh % of viewport */
๐Ÿง 

CS Quick Reference

Big-O complexities, powers of two, and ASCII landmarks, handy for exams and interviews.

Data Structure Operations (average)

StructureAccessSearchInsertDelete
ArrayO(1)O(n)O(n)O(n)
Linked ListO(n)O(n)O(1)O(1)
Stack / QueueO(n)O(n)O(1)O(1)
Hash Tablen/aO(1)O(1)O(1)
Binary Search TreeO(log n)O(log n)O(log n)O(log n)
Heapn/aO(n)O(log n)O(log n)

Sorting Algorithms

AlgorithmBestAverageWorstSpace
Bubble SortO(n)O(nยฒ)O(nยฒ)O(1)
Insertion SortO(n)O(nยฒ)O(nยฒ)O(1)
Merge SortO(n log n)O(n log n)O(n log n)O(n)
Quick SortO(n log n)O(n log n)O(nยฒ)O(log n)
Heap SortO(n log n)O(n log n)O(n log n)O(1)
Binary SearchO(1)O(log n)O(log n)O(1)

Powers of Two

PowerValueNote
2โด16one hex digit
2โธ2561 byte
2ยนโฐ1,0241 KiB
2ยนโถ65,5362 bytes / ports
2ยฒโฐ1,048,5761 MiB
2ยณโฐ1,073,741,8241 GiB
2ยณยนโˆ’12,147,483,647max signed int32
2ยณยฒ4,294,967,296IPv4 space
2โถโดโ‰ˆ 1.8 ร— 10ยนโนmax uint64 + 1

ASCII Landmarks

CharDecHexNote
NUL00x00string terminator (C)
\n (LF)100x0Anewline
space320x20first printable
'0'480x30digits 48โ€“57
'A'650x41uppercase 65โ€“90
'a'970x61lowercase 97โ€“122 ('A' + 32)
โœจ All ๐Ÿ”ข Base Converter ๐Ÿงฎ Bitwise ๐Ÿ“ฑ QR Code ๐Ÿ”ค ASCII / Unicode ๐Ÿ” Hashing ๐Ÿ“ฆ Base64 ๐ŸŒ URL Encode ๐Ÿงพ JSON โฑ๏ธ Timestamps ๐Ÿ†” UUID ๐ŸŽจ Color ๐Ÿ“š Cheat Sheets ๐Ÿง  CS Reference