# Proton
## Microsim
### Live player
<div class="microsim-player">
<iframe src="https://editor.p5js.org/sciencenibber/full/09Qloq3Kk" width="100%" height="620" frameborder="0" sandbox="allow-scripts allow-same-origin"></iframe>
</div>
<div class="microsim-fallback">
<img src="Microsims/thumbs/Proton.png" alt="Proton microsim poster" style="width:100%;border:1px solid #4445;border-radius:6px;">
<p><em>Live microsim (desktop) · <a href="https://editor.p5js.org/sciencenibber/sketches/09Qloq3Kk">open sketch in the p5.js editor</a></em></p>
</div>
**Editor URL:** https://editor.p5js.org/sciencenibber/sketches/09Qloq3Kk
**Description (100 words):**
A confinement bag holds three valence quarks (two up, one down) bouncing with reflecting Brownian motion. Drag the log10(Q^2 / GeV^2) slider to raise the probing energy and watch sea quark-antiquark pairs (faint dim dots) and gluons (yellow with tails) appear and proliferate — at LHC-class Q^2, gluons dominate the picture, matching the cartoon DGLAP [[Evolution|evolution]]. A second slider resizes the ~0.84 fm bag; a third boosts sea [[Density|density]]. The right-hand mass-partition gauge shows the headline lesson: only ~1% of the proton mass is Higgs / current-quark rest mass; ~99% is QCD gluon binding energy.
```js
// =====================================================================
// Proton.js -- Wikitube microsim
// Article: Proton en.wikitube.io/wiki/Proton
// Room: Helium Pattern: E (particles inside a bag)
// ---------------------------------------------------------------------
// Idea: a live view of the proton's internal QCD structure. The
// reader watches the proton as a spherical confinement bag holding
// three valence quarks (uud) plus, when the probing scale is raised,
// a sea of virtual quark-antiquark pairs and gluons. Sliders let the
// reader change Q^2 (the energy scale of the probe) and the bag
// radius (~0.84 fm in reality). At low Q^2 the proton resolves only
// the three valence quarks; at high Q^2 the parton population
// explodes -- sea quarks proliferate and gluons (which carry roughly
// half the proton's momentum at LHC energies) dominate the picture.
//
// Physics
// -------
// Proton quark content: p = u u d
// Quark electric charges: Q(u) = +2/3 e, Q(d) = -1/3 e
// Total electric charge: Q_p = 2(+2/3) + (-1/3) = +1 e
// Spin: J = 1/2 (h-bar)
// Mass: m_p ~ 938.272 MeV/c^2 (~1836 m_e)
// Baryon number: B = +1
// Lifetime: tau_p > 10^34 yr (experimental bound)
//
// Mass partition (approximate, modern lattice-QCD picture):
// Higgs / current-quark masses ~ 9 MeV (about 1%)
// QCD gluon binding energy ~ 929 MeV (about 99%)
// The bulk of the proton's mass comes from the kinetic energy and
// self-coupling of the gluon field inside the confinement bag,
// per E = mc^2 -- not from the bare rest mass of u and d quarks.
//
// Parton evolution (DGLAP, schematic):
// As Q^2 increases, gluons split into quark-antiquark pairs and into
// additional gluons. The number of resolved partons grows roughly as
// N_partons(Q^2) ~ N_valence + a * log(Q^2 / Q0^2)
// with N_valence = 3 and a small. We use a logarithmic schedule for
// the sea/gluon population so the visual matches the textbook curve.
//
// Visual layout (720 x 520 canvas)
// --------------------------------
// * top strip: HUD title + en.wikitube.io/wiki/Proton subtitle
// * top-right: live readouts (Q^2, partons, charge sum, spin J)
// * left-center: confinement bag (translucent disc), three valence
// quarks (2 red 'u', 1 blue 'd') plus a sea of
// small dots (light grey = sea quarks, gold =
// gluons). Particles do reflecting Brownian motion
// inside the bag.
// * right-center: mass-partition gauge: a stacked bar split into
// Higgs (thin) and QCD binding (thick) so the
// reader sees the 1% / 99% lesson at a glance.
// * bottom row: three sliders (log10(Q^2/GeV^2), bag radius, sea
// intensity) plus a 'reset' button.
// * bottom-right: ASCII canonical equation
//
// Conventions (Wikitube Betterfire Standard v0)
// ---------------------------------------------
// * single ARTICLE constant at top, single quotes
// * p5.disableFriendlyErrors = true keeps the editor console clean
// * non-ASCII characters (Greek mu, sigma, sub/superscripts) live
// in COMMENTS only; every text() string literal is plain ASCII
// * Energy-room palette (P5_JS_EDITOR section 4)
// * controls have explicit .position(x, y).size(w)
// * HUD drawn by drawHUD() called once per draw()
// =====================================================================
const ARTICLE = 'Proton';
const TITLE = ARTICLE.replace(/_/g, ' ');
p5.disableFriendlyErrors = true;
// ----- Energy-room palette (P5_JS_EDITOR section 4) ------------------
const BG = 18;
const FG = 240;
const DIM = [240, 240, 240, 140];
const HOT = [220, 110, 60]; // up quark (warm red-orange)
const COLD = [60, 130, 220]; // down quark (cool blue)
const STRUCT = [120, 130, 150]; // bag outline, gauge frame
const TRAJ = [240, 220, 80]; // gluons (yellow)
const SCRATCH = [120, 120, 120, 80]; // faint grid / scratch lines
const SEA = [200, 200, 210, 120]; // sea quarks (dim grey)
const GAUGE = [120, 220, 140]; // mass-gauge accent (green)
// ----- Geometry: bag, gauge ------------------------------------------
let bagX, bagY; // bag center
let bagR; // bag radius in pixels (driven by slider)
let gaugeX, gaugeY, gaugeW, gaugeH; // mass-partition gauge rect
// ----- Particle bookkeeping -----------------------------------------
// Each particle has a position, a velocity, and a 'kind' tag used to
// pick its colour and label:
// 'u' valence up quark (charge +2/3)
// 'd' valence down quark (charge -1/3)
// 'u_sea' sea up-antiup quark pair (treated as one cloud dot)
// 'd_sea' sea down-antidown pair
// 'g' gluon
// Valence quarks are always exactly three (u, u, d). Sea and gluon
// populations are regenerated whenever Q^2 changes meaningfully.
let particles = [];
// ----- Controls -----------------------------------------------------
let q2Slider, radiusSlider, seaSlider, resetBtn;
// =====================================================================
// Setup -- canvas, layout, sliders
// =====================================================================
function setup() {
createCanvas(720, 520);
pixelDensity(2);
textFont('system-ui');
// ----- Bag center (left-center of canvas) -------------------------
bagX = 230;
bagY = 250;
bagR = 130; // matches slider default below
// ----- Mass-partition gauge (right-center) ------------------------
gaugeX = 470;
gaugeY = 130;
gaugeW = 70;
gaugeH = 280;
// ----- Sliders along bottom row (y = 470) -------------------------
// Q^2 slider: log10 of the probing energy scale in GeV^2.
// 0 = 1 GeV^2 (low resolution, only valence quarks visible)
// 4 = 10000 GeV^2 (LHC-class, gluons dominate the bag).
q2Slider = createSlider(0.0, 4.0, 1.0, 0.05);
q2Slider.position(20, 470);
q2Slider.size(180);
// Bag-radius slider: visual radius in pixels. The physical proton
// charge radius is ~0.84 fm; we expose this as 80-180 pixels.
radiusSlider = createSlider(80, 180, 130, 1);
radiusSlider.position(220, 470);
radiusSlider.size(140);
// Sea/gluon intensity multiplier -- a non-physical 'show more sea'
// dial so the reader can crank the parton cloud independently of
// Q^2 to inspect the shape and motion of the sea population.
seaSlider = createSlider(0.5, 2.5, 1.0, 0.05);
seaSlider.position(380, 470);
seaSlider.size(140);
// Reset button: re-spawns the bag with default slider values.
resetBtn = createButton('reset');
resetBtn.position(540, 470);
resetBtn.size(60, 22);
resetBtn.mousePressed(() => {
q2Slider.value(1.0);
radiusSlider.value(130);
seaSlider.value(1.0);
spawnBag();
});
// Seed the initial particle list.
spawnBag();
}
// =====================================================================
// Per-frame draw loop
// =====================================================================
function draw() {
background(BG);
// Read all slider values once into named locals -- the rest of the
// frame references the locals, not slider.value() calls.
const logQ2 = q2Slider.value(); // log10(Q^2 / GeV^2)
const Q2 = pow(10, logQ2); // Q^2 in GeV^2
const newR = radiusSlider.value(); // bag radius in pixels
const seaK = seaSlider.value(); // sea/gluon multiplier
// If the radius slider changed by more than a pixel, re-fit
// particles to the new bag so they don't stick to the wall.
if (abs(newR - bagR) >= 1) {
bagR = newR;
refitParticles();
}
// If Q^2 changed enough that the target parton count differs by
// more than ~3 particles, re-spawn the sea/gluon population. The
// valence triplet is preserved.
const targetSea = seaTarget(Q2, seaK);
const currentSea = particles.filter(p => p.kind !== 'u' && p.kind !== 'd').length;
if (abs(currentSea - targetSea) > 3) {
refreshSeaAndGluons(targetSea);
}
// Integrate one Brownian-motion step per particle, reflect off the
// bag wall, then draw the bag plus all particles.
stepParticles();
drawBag();
drawParticles();
// Right-panel mass-partition gauge.
drawMassGauge();
// Slider labels and value readouts (left of/above each slider).
drawSliderLabels(logQ2, Q2, bagR, seaK);
// HUD: title, subtitle, top-right live readouts, formula.
drawHUD(Q2);
}
// =====================================================================
// Initial bag spawn -- 2 u + 1 d valence quarks + initial sea/gluons
// =====================================================================
function spawnBag() {
particles = [];
// Valence quarks: u, u, d. Spawn at three points on a small
// triangle inside the bag with low initial speed; the dynamics
// give them their motion.
const triR = bagR * 0.35;
particles.push(makeQuark('u', bagX + triR * cos(-PI/2), bagY + triR * sin(-PI/2)));
particles.push(makeQuark('u', bagX + triR * cos(-PI/2 + TWO_PI/3), bagY + triR * sin(-PI/2 + TWO_PI/3)));
particles.push(makeQuark('d', bagX + triR * cos(-PI/2 + 2*TWO_PI/3), bagY + triR * sin(-PI/2 + 2*TWO_PI/3)));
// Initial sea/gluon population (Q^2 ~ 10 GeV^2 default).
refreshSeaAndGluons(seaTarget(pow(10, q2Slider.value()), seaSlider.value()));
}
// Helper: build a quark particle object.
function makeQuark(kind, x, y) {
return {
kind: kind,
x: x,
y: y,
vx: random(-1.0, 1.0),
vy: random(-1.0, 1.0),
radius: kindRadius(kind),
};
}
// Radius (pixels) for each particle kind.
function kindRadius(kind) {
if (kind === 'u' || kind === 'd') return 8.0; // valence
if (kind === 'g') return 3.5; // gluon
return 2.8; // sea quark
}
// =====================================================================
// Sea/gluon population
// =====================================================================
// Number of non-valence partons we want visible at this Q^2. The
// schedule is: 0 sea/gluons at Q^2 = 1 GeV^2 (low resolution), and
// ~ 90 sea/gluons at Q^2 = 10000 GeV^2 -- a logarithmic ramp that
// matches the cartoon DGLAP picture.
function seaTarget(Q2, seaK) {
const n = floor(22 * log(Q2) / log(10) * seaK);
return constrain(n, 0, 140);
}
// Regenerate the sea and gluon population to match the target count.
// Composition: ~60% gluons, ~25% u_sea, ~15% d_sea (rough textbook
// proportions; gluons dominate at high Q^2).
function refreshSeaAndGluons(targetN) {
// Remove all current sea/gluon particles.
particles = particles.filter(p => p.kind === 'u' || p.kind === 'd');
// Add new ones to hit the target count.
for (let i = 0; i < targetN; i++) {
const r = random();
let kind = 'g';
if (r < 0.60) kind = 'g';
else if (r < 0.85) kind = 'u_sea';
else kind = 'd_sea';
// Uniform random spawn inside the bag (rejection sampling).
let px, py;
do {
px = bagX + random(-bagR, bagR);
py = bagY + random(-bagR, bagR);
} while ((px - bagX) ** 2 + (py - bagY) ** 2 > (bagR - 6) ** 2);
particles.push({
kind: kind,
x: px,
y: py,
vx: random(-2.0, 2.0),
vy: random(-2.0, 2.0),
radius: kindRadius(kind),
});
}
}
// =====================================================================
// Particle integration -- Brownian motion + reflecting bag wall
// =====================================================================
function stepParticles() {
// Per-frame thermal kick: a small random perturbation to vx, vy.
// Speed cap so the cloud doesn't drift into ballistic motion.
for (const p of particles) {
p.vx += random(-0.25, 0.25);
p.vy += random(-0.25, 0.25);
// Speed cap depends on kind: valence quarks move slower (they
// are heavier in the cartoon picture), gluons move faster.
const vMax = (p.kind === 'u' || p.kind === 'd') ? 1.6
: (p.kind === 'g') ? 3.0
: 2.2;
const sp = sqrt(p.vx * p.vx + p.vy * p.vy);
if (sp > vMax) {
p.vx *= vMax / sp;
p.vy *= vMax / sp;
}
// Step.
p.x += p.vx;
p.y += p.vy;
// Reflecting wall: if particle is outside (bagR - p.radius),
// push it back inside and flip the radial component of velocity.
const dx = p.x - bagX;
const dy = p.y - bagY;
const dist = sqrt(dx * dx + dy * dy);
const rMax = bagR - p.radius;
if (dist > rMax) {
// Push back to the wall and reflect velocity radially.
const nx = dx / dist;
const ny = dy / dist;
p.x = bagX + nx * rMax;
p.y = bagY + ny * rMax;
const vDotN = p.vx * nx + p.vy * ny;
p.vx -= 2 * vDotN * nx;
p.vy -= 2 * vDotN * ny;
}
}
}
// If the bag radius shrinks, any particle now outside the new wall
// gets pushed onto the new boundary so the visual stays clean.
function refitParticles() {
for (const p of particles) {
const dx = p.x - bagX;
const dy = p.y - bagY;
const d = sqrt(dx * dx + dy * dy);
const rMax = bagR - p.radius;
if (d > rMax) {
const nx = dx / max(d, 1e-6);
const ny = dy / max(d, 1e-6);
p.x = bagX + nx * rMax;
p.y = bagY + ny * rMax;
}
}
}
// =====================================================================
// Rendering: bag, particles, mass-partition gauge, labels, HUD
// =====================================================================
// The confinement bag itself: a translucent disc with a soft glow at
// the edge to suggest the QCD pressure boundary.
function drawBag() {
noFill();
// Outer glow rings (faint).
for (let g = 6; g >= 1; g--) {
stroke(STRUCT[0], STRUCT[1], STRUCT[2], 20);
strokeWeight(g * 2);
circle(bagX, bagY, (bagR + g) * 2);
}
// Main bag fill (very translucent).
noStroke();
fill(60, 80, 100, 50);
circle(bagX, bagY, bagR * 2);
// Bag boundary stroke.
noFill();
stroke(STRUCT[0], STRUCT[1], STRUCT[2], 200);
strokeWeight(1.5);
circle(bagX, bagY, bagR * 2);
// Bag label (just outside, top-left of the disc).
noStroke();
fill(DIM[0], DIM[1], DIM[2], 200);
textSize(11);
textAlign(LEFT, BOTTOM);
text('confinement bag (~0.84 fm)', bagX - bagR, bagY - bagR - 6);
}
// Draw every particle. Valence quarks get a labelled dot ('u' / 'd');
// sea and gluon particles are smaller dim circles. Gluons get a tiny
// trailing tail so they read as the carriers of the strong force.
function drawParticles() {
// Sea/gluon pass first (so valence quarks render on top).
for (const p of particles) {
if (p.kind === 'u' || p.kind === 'd') continue;
noStroke();
if (p.kind === 'g') {
// Gluon: small yellow dot with a faint tail.
fill(TRAJ[0], TRAJ[1], TRAJ[2], 200);
circle(p.x, p.y, p.radius * 2);
stroke(TRAJ[0], TRAJ[1], TRAJ[2], 90);
strokeWeight(1);
line(p.x, p.y, p.x - p.vx * 2.0, p.y - p.vy * 2.0);
noStroke();
} else if (p.kind === 'u_sea') {
// Sea up-antiup pair: dim warm dot.
fill(HOT[0], HOT[1], HOT[2], 130);
circle(p.x, p.y, p.radius * 2);
} else {
// Sea down-antidown pair: dim cool dot.
fill(COLD[0], COLD[1], COLD[2], 130);
circle(p.x, p.y, p.radius * 2);
}
}
// Valence quarks pass: filled dot + bright outline + letter label.
textAlign(CENTER, CENTER);
textSize(11);
textStyle(BOLD);
for (const p of particles) {
if (p.kind !== 'u' && p.kind !== 'd') continue;
const col = (p.kind === 'u') ? HOT : COLD;
// Glow ring.
noFill();
stroke(col[0], col[1], col[2], 100);
strokeWeight(3);
circle(p.x, p.y, p.radius * 2 + 6);
// Filled body.
noStroke();
fill(col[0], col[1], col[2], 240);
circle(p.x, p.y, p.radius * 2);
// Letter label.
fill(BG);
text(p.kind, p.x, p.y + 0.5);
}
textStyle(NORMAL);
}
// Mass-partition gauge: a vertical stacked bar split into the tiny
// Higgs contribution (~1%) at the bottom and the QCD-binding-energy
// contribution (~99%) on top. This is the headline lesson of modern
// proton structure: the proton's mass is almost entirely the energy
// of the gluon field, not the rest mass of its quarks.
function drawMassGauge() {
const higgsFrac = 0.01; // ~ 9 MeV / 938 MeV
const qcdFrac = 1.0 - higgsFrac;
// Gauge frame.
noFill();
stroke(STRUCT[0], STRUCT[1], STRUCT[2], 200);
strokeWeight(1);
rect(gaugeX, gaugeY, gaugeW, gaugeH, 4);
// QCD-binding section (top, dominant).
noStroke();
fill(GAUGE[0], GAUGE[1], GAUGE[2], 180);
const qcdH = gaugeH * qcdFrac;
rect(gaugeX + 1, gaugeY + 1, gaugeW - 2, qcdH - 1);
// Higgs section (bottom, thin sliver).
fill(HOT[0], HOT[1], HOT[2], 200);
const higgsH = gaugeH * higgsFrac;
rect(gaugeX + 1, gaugeY + qcdH, gaugeW - 2, higgsH - 1);
// Labels.
fill(FG);
textAlign(LEFT, CENTER);
textSize(11);
text('m_p ~ 938 MeV', gaugeX + gaugeW + 8, gaugeY + 6);
text('QCD binding', gaugeX + gaugeW + 8, gaugeY + gaugeH * 0.45);
text(' ~ 929 MeV', gaugeX + gaugeW + 8, gaugeY + gaugeH * 0.45 + 14);
text(' ~ 99%', gaugeX + gaugeW + 8, gaugeY + gaugeH * 0.45 + 28);
text('Higgs masses', gaugeX + gaugeW + 8, gaugeY + gaugeH - 28);
text(' ~ 9 MeV (~1%)', gaugeX + gaugeW + 8, gaugeY + gaugeH - 12);
// Title above the gauge.
textAlign(LEFT, BOTTOM);
fill(DIM[0], DIM[1], DIM[2], 220);
text('mass partition', gaugeX, gaugeY - 6);
}
// Slider labels (above each slider) plus value readouts (right of).
function drawSliderLabels(logQ2, Q2, bagRpx, seaK) {
textAlign(LEFT, BOTTOM);
textSize(11);
fill(DIM[0], DIM[1], DIM[2], 220);
text('log10(Q^2 / GeV^2)', 20, 468);
text('bag radius (px)', 220, 468);
text('sea / gluon density', 380, 468);
textAlign(LEFT, CENTER);
textSize(12);
fill(FG);
text(nf(logQ2, 1, 2), 205, 479);
text(nf(bagRpx, 0), 365, 479);
text(nf(seaK, 1, 2), 525, 479);
}
// =====================================================================
// HUD -- title, subtitle, top-right live readouts, formula
// =====================================================================
function drawHUD(Q2) {
// Title bar background panel.
noStroke();
fill(0, 140);
rect(0, 0, width, 44);
// Title (top-left, 22pt bright).
fill(FG);
textAlign(LEFT, TOP);
textSize(22);
text(TITLE, 14, 10);
// Subtitle (12pt dim) -- ASCII dot separator, not a bullet.
fill(DIM[0], DIM[1], DIM[2], DIM[3]);
textSize(12);
text('Wikitube microsim . en.wikitube.io/wiki/' + ARTICLE, 14, 30);
// Top-right live readouts: Q^2 (in GeV^2), parton population by
// kind, the trivially-conserved charge sum and spin readout. These
// are what the reader checks to confirm the cartoon physics.
let nU = 0, nD = 0, nUsea = 0, nDsea = 0, nG = 0;
for (const p of particles) {
if (p.kind === 'u') nU++;
else if (p.kind === 'd') nD++;
else if (p.kind === 'u_sea') nUsea++;
else if (p.kind === 'd_sea') nDsea++;
else nG++;
}
const chargeSum = (2 * (2 / 3)) + (-1 / 3); // = +1, valence only
textAlign(RIGHT, TOP);
fill(FG);
textSize(12);
text('Q^2 = ' + nf(Q2, 0, 1) + ' GeV^2', width - 14, 6);
text('valence: 2u + 1d', width - 14, 22);
text('sea: ' + nUsea + ' u/ubar + ' + nDsea + ' d/dbar', width - 14, 36 + 12);
text('gluons: ' + nG, width - 14, 36 + 28);
text('Q_p = +' + nf(chargeSum, 1, 0) + ' e J = 1/2', width - 14, 36 + 44);
text('B = +1 stable', width - 14, 36 + 60);
// Bottom-right canonical equation (ASCII).
textAlign(RIGHT, BOTTOM);
textSize(12);
fill(DIM[0], DIM[1], DIM[2], 220);
text('p = uud Q = 2(+2/3) + (-1/3) = +1 e m = 938.272 MeV/c^2',
width - 12, height - 10);
// Reset alignment so downstream callers aren't surprised.
textAlign(LEFT, BASELINE);
}
```
## Links (Wikipedia order)
<!-- injected from _registry/childlinks/Proton.json (2026-07-30T02:09:12Z) -->
`AIP_Conference_Proceedings` · `Aage_Bohr` · `Ab_initio_methods_(nuclear_physics)` · `Acid` · `Alexandru_Proca` · [[Alpha_decay]] · `American_Association_for_the_Advancement_of_Science` · `American_Journal_of_Physics` · `Amphetamine` · `Annalen_der_Physik` · `Antihydrogen` · `Antineutron` · `Antiparticle` · `Antiproton` · `Antonius_van_den_Broek` · `Anyon` · `Apollo_Lunar_Surface_Experiments_Package` · `Artificial_disintegration` · `Atom` · `Atomic_nucleus` · `Atomic_number` · `Atomic_orbital` · `Axino` · `Axion` · `B_meson` · `Baryon` · `Base_(chemistry)` · [[Beta_decay]] · `Big_Bang_nucleosynthesis` · `Biochemistry` · `Bohr_magneton` · `Born_equation` · `Borromean_nucleus` · [[Boson]] · `Bottom_eta_meson` · `Bottom_quark` · `Bound_state` · `Brady_Haran` · `Brookhaven_National_Laboratory` · `Brønsted–Lowry_acid–base_theory` · `CRC_Press` · `Cambridge_University_Press` · `Cancer` · `Charge_radius` · `Chargino` · `Charm_quark` · [[Chemical_element]] · `Chemical_symbol` · [[Chemistry]] · [[Chlorine]] · `Clinton_Davisson` · `Cloud_chamber` · `Cluster_decay` · `Color_charge` · `Compton_scattering` · `Constituent_quark` · `Coronal_mass_ejection` · `Cosmic_ray` · `Cosmic_ray_spallation` · `Cosmogenic_nuclide` · `Current_quark` · `Curvaton` · `D_meson` · `Dalton_(unit)` · `Dark_photon` · `Davydov_soliton` · [[Decay_chain]] · `Decay_energy` · [[Decay_product]] · `Delta_baryon` · `Deuterium` · `Dilaton` · `Diquark` · `Discovery_of_the_neutron` · `Dopaminergic` · `Double-charm_tetraquark` · `Double_beta_decay` · `Double_electron_capture` · `Down_quark` · `Dropleton` · `Dual_graviton` · `Earth's_magnetic_field` · `Edward_Mills_Purcell` · `Edward_Teller` · `Effect_of_spaceflight_on_the_human_body` · `Eightfold_way_(physics)` · `Electric_charge` · `Electric_dipole_moment` · [[Electron]] · `Electron_capture` · `Electron_hole` · `Electron_neutrino` · `Electronvolt` · `Elementary_charge` · `Elementary_particle` · `Enrico_Fermi` · `Ernest_Lawrence` · `Ernest_Rutherford` · `Ernest_Walton` · `Eugen_Goldstein` · `Eugene_Wigner` · `Even_and_odd_atomic_nuclei` · `Exciton` · `Exotic_atom` · `Exotic_hadron` · `Exotic_matter` · `Extrapolation` · `Faddeev–Popov_ghost` · `Femtometre` · [[Fermion]] · `Fermionic_field` · `Fracton_(subdimensional_particle)` · `Frederick_Soddy` · `Free_neutron_decay` · `Fritz_Strassmann` · `Frédéric_Joliot-Curie` · `Fundamental_interaction` · `Gamma_ray` · `Gauge_boson` · `Gaugino` · `Ghost_(physics)` · `Glueball` · `Gluino` · `Gluon` · `Graviphoton` · `Gravitino` · `Graviton` · `Gravity` · `Greek_language` · `Hadron` · `Halo_nucleus` · `Hans_Bethe` · `Henri_Becquerel` · `Henry_Moseley` · `Heptaquark` · `Hexaquark` · `Higgs_boson` · `Higgsino` · `High-energy_nuclear_physics` · `History_of_subatomic_physics` · `Human_spaceflight` · [[Hydrogen]] · `Hydrogen_atom` · `Hydrogen_ion` · `Hydronium` · `Inertial_frame_of_reference` · `Inflaton` · `Interacting_boson_model` · `Internal_conversion` · `International_Journal_of_Mass_Spectrometry` · `Interstellar_medium` · `Invariant_mass` · `Inverse_beta_decay` · `Ionization` · `Irène_Joliot-Curie` · `Island_of_stability` · `Isobar_(nuclide)` · `Isospin` · `Isotone` · `Isotope` · `Isotopes_of_chlorine` · `J._Hans_D._Jensen` · `J._J._Thomson` · `J._Robert_Oppenheimer` · `J/psi_meson` · `James_Chadwick` · `Jean_Dawson` · `John_Cockcroft` · `Kaon` · `Kinetic_energy` · `Lamb_shift` · `Lambda_baryon` · `Large_Hadron_Collider` · `Lattice_QCD` · `Laurence_Eaves` · `Lawrence_Berkeley_National_Laboratory` · `Lepton` · `Leptoquark` · `Lise_Meitner` · `List_of_baryons` · `List_of_hypothetical_particles` · `List_of_mesons` · `List_of_particles` · `List_of_quasiparticles` · `List_of_unsolved_problems_in_physics` · `Luis_Walter_Alvarez` · `Lunar_and_Planetary_Institute` · `Magic_number_(physics)` · `Magnetic_moment` · `Magnetic_monopole` · `Magnetosheath` · `Magnon` · `Majorana_fermion` · `Majoron` · `Marie_Curie` · `Mark_Oliphant` · `Mass_in_special_relativity` · `Mass_number` · `Massless_particle` · `Mass–energy_equivalence` · `Mathematical_formulation_of_the_Standard_Model` · `Meson` · `Mesonic_molecule` · `Microorganism` · `Mirror_nuclei` · `Molecule` · [[Moon]] · `Muon` · `Muon_neutrino` · `Muonium` · `National_Institute_of_Standards_and_Technology` · `Nature_(journal)` · `Neutralino` · `Neutrino` · `Neutrinoless_double_beta_decay` · [[Neutron]] · `Neutron_capture` · `Neutron_emission` · `Neutron_number` · `Neutron_star` · `Niels_Bohr` · [[Nitrogen]] · `Nuclear_astrophysics` · `Nuclear_binding_energy` · `Nuclear_drip_line` · `Nuclear_fission` · `Nuclear_fission_product` · `Nuclear_force` · [[Nuclear_fusion]] · `Nuclear_isomer` · [[Nuclear_magnetic_resonance]] · `Nuclear_magneton` · `Nuclear_matter` · `Nuclear_physics` · `Nuclear_reaction` · `Nuclear_shell_model` · `Nuclear_structure` · `Nucleon` · `Nucleon_pair_breaking_in_fission` · [[Nucleosynthesis]] · `Nuclide` · `Oliver_Lodge` · `Omega_baryon` · `Omega_meson` · `Onium` · `Organic_chemistry` · `Otto_Hahn` · `Oxford_English_Dictionary` · `Oxford_University_Press` · `P-process` · `Parity_(physics)` · `Particle` · `Particle_chauvinism` · `Particle_physics` · `Particle_statistics` · `Patrick_Blackett` · `Penning_trap` · `Pentaquark` · `Periodic_table` · `Phi_meson` · `Philosophical_Magazine` · `Phonon` · `Photino` · `Photodisintegration` · `Photofission` · [[Photon]] · `Pierre_Curie` · `Pion` · `Pionium` · `Planck_constant` · [[Plasma_(physics)]] · `Plasmaron` · `Plasmon` · `Polariton` · `Polarizability` · `Polaron` · `Pomeron` · `Positron` · [[Positron_emission]] · `Positronium` · `Preon` · `Pressure` · `Primordial_nuclide` · `Princeton_University_Press` · `Proper_acceleration` · `Proton-to-electron_mass_ratio` · `Proton_(disambiguation)` · `Proton_capture` · `Proton_decay` · `Proton_emission` · `Proton_pump` · `Proton_radius_puzzle` · `Proton_spin_crisis` · `Proton_therapy` · `Protonium` · `Proton–proton_chain` · `Prout's_hypothesis` · `QCD_vacuum` · `Quanta_Magazine` · `Quantization_(physics)` · `Quantum_chromodynamics` · `Quantum_chromodynamics_binding_energy` · `Quantum_field_theory` · `Quark` · `Quark_model` · `Quarkonium` · `Quark–gluon_plasma` · `Quasiparticle` · `R-hadron` · `R-process` · [[Radioactive_decay]] · `Radiogenic_nuclide` · [[Radium]] · `Relativistic_Heavy_Ion_Collider` · `Relativistic_particle` · `Rho_meson` · `Rindler_coordinates` · `Roton` · `Rp-process` · `S-matrix` · `S-process` · `STS-65` · `Scalar_boson` · [[Science_(journal)]] · `Science_News` · `Semi-empirical_mass_formula` · `Sfermion` · `Sigma_baryon` · `Skyrmion` · `Solar_wind` · `Solvation` · `Solvay_Conference` · `Spallation` · `Special_relativity` · `Spectrometer` · [[Spin_(physics)]] · [[Spontaneous_fission]] · `Stable_nuclide` · `Standard_Model` · `Stellar_nucleosynthesis` · `Sterile_neutrino` · `Stop_squark` · `Strange_quark` · `String_theory` · `Strong_interaction` · `Subatomic_particle` · `Super-Kamiokande` · `Superatom` · `Supernova_nucleosynthesis` · `Superpartner` · `Synthetic_element` · `T_meson` · `Tachyon` · `Tau_(particle)` · `Tau_neutrino` · `Tetraquark` · `Theta_meson` · `Thunderstorm` · `Timeline_of_atomic_and_subatomic_physics` · `Timeline_of_particle_discoveries` · `Tony_Skyrme` · `Top_quark` · `Trion_(physics)` · `Tritium` · `University_of_Nottingham` · `Unruh_effect` · `Up_quark` · `Upsilon_meson` · `Ute_Ebert` · `Valley_of_stability` · `Virtual_particle` · `W_and_Z_bosons` · `Wave–particle_duality` · [[Wayback_Machine]] · `Weak_interaction` · `Wilhelm_Wien` · `William_Prout` · `Władysław_Świątecki_(physicist)` · `W′_and_Z′_bosons` · `X-ray_spectroscopy` · `X_and_Y_bosons` · `Xi_baryon` · `Zinc_sulfide`
## From the Real GENERATIVE library

*Proton — placed from the Real G.E.N.E.R.A.T.I.V.E. course library (Nuclear room). Source: Wikimedia Commons (via Wikipedia article media). [Details & license](https://commons.wikimedia.org/wiki/File:Quark_structure_proton.svg).*
> A proton is a stable subatomic particle, symbol p, H+, or 1H+ with a positive electric charge of +1 e (elementary charge). Its mass is slightly less than the mass of a neutron and approximately 1836 times the mass of an electron (the proton-to-electron mass ratio). ([Wikipedia](https://en.wikipedia.org/wiki/Proton))
<!-- REAL-GENERATIVE-MEDIA:END -->
<!-- LOCAL-MEDIA-PASS:START -->
## From the vault media library
!Proton thumb.png
*Proton — from the vault's own media holdings, placed 2026-07-09. MTN / Wikitube.io original · CC BY-SA 4.0.*
<!-- LOCAL-MEDIA-PASS:END -->
> **Room:** [[Helium]] · **Status:** ✅ shipped
## Overview
A **proton** is a stable subatomic particle, symbol p, with a positive electric charge of +1 elementary charge (about 1.602 x 10^-19 C), a mass of roughly 938.272 MeV/c^2 (some 1,836 times the [[Electron|electron]] mass), and spin 1/2. Protons are baryons — composite particles built from three valence quarks bound by the strong interaction. The proton's quark content is two up quarks and one down quark (uud), whose fractional charges +2/3, +2/3, and -1/3 sum to the observed +1.
Discovered by Ernest Rutherford in 1917 through nitrogen-disintegration experiments and named after the Greek protos ("first"), the proton was once treated as elementary. Deep inelastic scattering experiments at SLAC in the late 1960s revealed its substructure, vindicating the quark model of Gell-Mann and Zweig and motivating quantum chromodynamics (QCD), the gauge theory of the strong [[Force|force]]. In modern QCD the proton is a dynamic sea of valence quarks, virtual quark-antiquark pairs, and gluons, with the resolved parton population depending on the [[Energy|energy]] scale Q^2 of the probe.
Most of the proton's mass arises not from the rest mass of its valence quarks (which contribute roughly 1%) but from the [[Binding_energy|binding energy]] of the gluon field, in line with E = mc^2. Free protons are stable on cosmological timescales — current limits place the lifetime above 10^34 years. As nuclei of hydrogen-1 and constituents of every heavier nucleus, protons number among the most abundant baryons in the visible universe.
## See also
- Room hub: [[Helium]]
- p5.js Editor conventions: P5 JS EDITOR
- Wiki root: MAIN
---
*Scaffolded by `generative-microsim` from row 172 of the Helium sheet on 2026-05-14T22:07:03Z.*
<!-- REAL-GENERATIVE-MEDIA:START -->
<!-- CRAFT-LINK:START g12 -->
*Built to the [[WT!P5_js_Microsim_Master_Class|p5.js Master Class]].*
<!-- CRAFT-LINK:END -->
## Wikipedia : Wikitube
**Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Proton) : [Wikitube](https://en.wikitube.io/wiki/Proton)
## Previous hub tags
Tree parents: [[Helium-3]] · [[Hydrogen]] · [[Oxygen]].
Legacy hubs: none.
---
*Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*