CogitaVerse

Spontaneous vs Non-Spontaneous Reactions | Chemistry Guide

Spontaneous and Non-Spontaneous Reactions

Understanding Natural Processes, Thermodynamic Criteria, and Real-World Examples
Reactant A Reactant B Product AB Energy Input
Spontaneous – Reaction proceeds naturally
0% reaction complete

A spontaneous process occurs autonomously, transitioning from a non-equilibrium state to an equilibrium state without external intervention.

  • (i) Water flow: Water flows from higher to lower elevation.
  • (ii) Acid-base neutralisation: NaOH + HCl → NaCl + H₂O
NaOH (aq) + HCl (aq) → NaCl (aq) + H2O (l)

A reaction is spontaneous if it requires initial energy but then proceeds autonomously. Combustion of coal is spontaneous once ignited.

Non-Spontaneous Processes

A non-spontaneous process does not occur on its own without external energy input.

  • (i) Pumping water uphill (requires work).
  • (ii) Refrigerator heat transfer (requires electrical work).
  • (iii) N₂ + O₂ → 2NO (requires lightning energy).
N2(g) + O2(g) → 2NO(g) (non-spontaneous)

Thermodynamic Criterion

Spontaneity at constant temperature and pressure is determined by Gibbs free energy (ΔG):

ΔG = ΔH – TΔS
  • ΔG < 0 → Spontaneous
  • ΔG > 0 → Non-spontaneous
  • ΔG = 0 → Equilibrium

Examples

  • Spontaneous: Dissolution of salt, rusting of iron, expansion of gas.
  • Non-spontaneous: Electrolysis of water, photosynthesis, charging a battery.

Complete Lecture: Spontaneous vs Non-Spontaneous Reactions

Key Takeaways

  • Spontaneous processes occur naturally without external energy input after initiation.
  • Non-spontaneous processes require continuous energy input from an external source.
  • The sign of ΔG determines spontaneity.
2025 – Comprehensive guide to Spontaneous and Non-Spontaneous Reactions.
(function() { var canvas = document.getElementById(‘spontCanvas’); if (!canvas) return; var ctx = canvas.getContext(‘2d’);var isRunning = true; var mode = ‘spontaneous’; var progress = 0.0; var speed = 0.0025;var reactantsA = [], reactantsB = [], products = [], energyParticles = [], collisions = [];function initParticles() { reactantsA = []; reactantsB = []; products = []; energyParticles = []; collisions = []; for (var i = 0; i < 14; i++) { reactantsA.push({ x: 30 + Math.random() * 140, y: 30 + Math.random() * 310, vx: (Math.random() – 0.5) * 0.6, vy: (Math.random() – 0.5) * 0.6, size: 10 + Math.random() * 3, active: true }); reactantsB.push({ x: 50 + Math.random() * 150, y: 30 + Math.random() * 310, vx: (Math.random() – 0.5) * 0.6, vy: (Math.random() – 0.5) * 0.6, size: 10 + Math.random() * 3, active: true }); products.push({ x: 580 + Math.random() * 160, y: 30 + Math.random() * 310, vx: (Math.random() – 0.5) * 0.4, vy: (Math.random() – 0.5) * 0.4, size: 13 + Math.random() * 3, active: false }); } for (var i = 0; i < 10; i++) { energyParticles.push({ x: 150 + Math.random() * 450, y: 30 + Math.random() * 310, vx: (Math.random() – 0.5) * 0.8, vy: (Math.random() – 0.5) * 0.8, size: 5 + Math.random() * 3, phase: Math.random() * 6.28 }); } } initParticles();function updateMeter() { var pct = Math.round(progress * 100); var meter = document.getElementById('simMeter'); var label = document.getElementById('simPercent'); if (meter) meter.style.width = pct + '%'; if (label) label.textContent = pct; }function checkCollision(p1, p2) { var dx = p1.x – p2.x, dy = p1.y – p2.y; return Math.sqrt(dx*dx + dy*dy) < (p1.size + p2.size – 2); }function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#0d1e2b'; ctx.fillRect(0, 0, canvas.width, canvas.height);// Energy graph var gx = 30, gy = 280, gw = 720, gh = 100; ctx.fillStyle = 'rgba(20,40,60,0.6)'; ctx.strokeStyle = 'rgba(100,180,220,0.25)'; ctx.lineWidth = 2; ctx.fillRect(gx, gy – gh, gw, gh); ctx.strokeRect(gx, gy – gh, gw, gh);ctx.strokeStyle = 'rgba(100,180,220,0.08)'; ctx.lineWidth = 0.5; for (var i = 0; i ‘, gx + gw / 2, gy + 20);ctx.fillStyle = ‘rgba(255,255,255,0.30)’; ctx.font = ‘bold 12px system-ui’; ctx.textAlign = ‘center’; ctx.fillText(‘Reactants’, gx + 50, gy + 12); ctx.fillText(‘Products’, gx + gw – 50, gy + 12);ctx.fillStyle = mode === ‘spontaneous’ ? ‘#2ecc71’ : ‘#e74c3c’; ctx.font = ‘bold 18px system-ui’; ctx.textAlign = ‘center’; ctx.fillText(mode === ‘spontaneous’ ? ‘DG 0’, midX, (mode === ‘spontaneous’ ? gy – gh * 0.45 : gy – gh * 0.75) + 10);if (mode === ‘nonspontaneous’ && progress > 0.05) { ctx.fillStyle = ‘rgba(231,76,60,0.20)’; ctx.fillRect(gx + 20, gy – 10, 80, 8); ctx.fillStyle = ‘rgba(231,76,60,0.5)’; ctx.font = ‘bold 10px system-ui’; ctx.textAlign = ‘center’; ctx.fillText(‘Energy Input’, gx + 60, gy – 16); }// Energy particles – only in non-spontaneous if (mode === ‘nonspontaneous’) { for (var i = 0; i < energyParticles.length; i++) { var p = energyParticles[i]; ctx.beginPath(); ctx.arc(p.x, p.y, p.size, 0, 6.28); ctx.fillStyle = '#f39c12'; ctx.shadowColor = '#f39c12'; ctx.shadowBlur = 16; ctx.fill(); ctx.shadowBlur = 0; ctx.fillStyle = '#fff'; ctx.font = 'bold 8px system-ui'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText('E', p.x, p.y + 1); ctx.textBaseline = 'alphabetic'; } }// Reactants for (var i = 0; i < reactantsA.length; i++) { var r = reactantsA[i]; if (!r.active) continue; ctx.beginPath(); ctx.arc(r.x, r.y, r.size, 0, 6.28); ctx.fillStyle = '#3498db'; ctx.shadowColor = '#3498db'; ctx.shadowBlur = 8; ctx.fill(); ctx.shadowBlur = 0; ctx.fillStyle = '#fff'; ctx.font = 'bold 10px system-ui'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText('A', r.x, r.y + 0.5); ctx.textBaseline = 'alphabetic'; } for (var i = 0; i < reactantsB.length; i++) { var r = reactantsB[i]; if (!r.active) continue; ctx.beginPath(); ctx.arc(r.x, r.y, r.size, 0, 6.28); ctx.fillStyle = '#9b59b6'; ctx.shadowColor = '#9b59b6'; ctx.shadowBlur = 8; ctx.fill(); ctx.shadowBlur = 0; ctx.fillStyle = '#fff'; ctx.font = 'bold 10px system-ui'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText('B', r.x, r.y + 0.5); ctx.textBaseline = 'alphabetic'; }// Products for (var i = 0; i < products.length; i++) { var p = products[i]; if (!p.active) continue; ctx.beginPath(); ctx.arc(p.x, p.y, p.size, 0, 6.28); ctx.fillStyle = '#2ecc71'; ctx.shadowColor = '#2ecc71'; ctx.shadowBlur = 10; ctx.fill(); ctx.shadowBlur = 0; ctx.fillStyle = '#fff'; ctx.font = 'bold 9px system-ui'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText('AB', p.x, p.y + 0.5); ctx.textBaseline = 'alphabetic'; }// Collisions var newCollisions = []; for (var i = 0; i < collisions.length; i++) { var c = collisions[i]; c.life -= 0.04; if (c.life 1.0) progress = 1.0; for (var i = 0; i < reactantsA.length; i++) { var r = reactantsA[i]; if (!r.active) continue; var dx = centerX – r.x; var dy = 320 – r.y + Math.sin(r.x * 0.03) * 40; r.x += dx * 0.002 * (1 + progress * 0.6); r.y += dy * 0.001; r.x += r.vx; r.y += r.vy; if (r.x 480) r.vx *= -1; if (r.y 340) r.vy *= -1; } for (var i = 0; i < reactantsB.length; i++) { var r = reactantsB[i]; if (!r.active) continue; var dx = centerX – r.x; var dy = 320 – r.y + Math.cos(r.x * 0.025) * 40; r.x += dx * 0.002 * (1 + progress * 0.6); r.y += dy * 0.001; r.x += r.vx; r.y += r.vy; if (r.x 480) r.vx *= -1; if (r.y 340) r.vy *= -1; } var toRemoveA = [], toRemoveB = []; for (var i = 0; i < reactantsA.length; i++) { var a = reactantsA[i]; if (!a.active) continue; for (var j = 0; j < reactantsB.length; j++) { var b = reactantsB[j]; if (!b.active) continue; if (checkCollision(a, b) && Math.random() < 0.06 + progress * 0.04) { for (var k = 0; k < products.length; k++) { if (!products[k].active) { products[k].active = true; products[k].x = (a.x + b.x) / 2 + (Math.random() – 0.5) * 20; products[k].y = (a.y + b.y) / 2 + (Math.random() – 0.5) * 20; products[k].vx = (a.vx + b.vx) / 2 + (Math.random() – 0.5) * 0.3; products[k].vy = (a.vy + b.vy) / 2 + (Math.random() – 0.5) * 0.3; collisions.push({ x: (a.x + b.x) / 2, y: (a.y + b.y) / 2, size: 22, life: 0.8 }); toRemoveA.push(i); toRemoveB.push(j); break; } } } } } toRemoveA.sort(function(a, b) { return b – a; }); toRemoveB.sort(function(a, b) { return b – a; }); for (var i = 0; i < toRemoveA.length; i++) reactantsA[toRemoveA[i]].active = false; for (var i = 0; i 0.92) { progress = 0.08; var deactivated = 0; for (var i = 0; i < products.length && deactivated < 3; i++) { if (products[i].active) { products[i].active = false; deactivated++; for (var j = 0; j 0; j++) { if (!reactantsA[j].active) { reactantsA[j].active = true; reactantsA[j].x = 30 + Math.random() * 120; reactantsA[j].y = 30 + Math.random() * 310; deactivated–; break; } } for (var j = 0; j 0; j++) { if (!reactantsB[j].active) { reactantsB[j].active = true; reactantsB[j].x = 50 + Math.random() * 130; reactantsB[j].y = 30 + Math.random() * 310; deactivated–; break; } } } } collisions.push({ x: 390, y: 160, size: 30, life: 0.6 }); } for (var i = 0; i < reactantsA.length; i++) { var r = reactantsA[i]; if (!r.active) continue; var dx = centerX – r.x; var dy = 320 – r.y + Math.sin(r.x * 0.03) * 40; r.x += dx * 0.001 * (1 + progress * 0.3); r.y += dy * 0.0005; r.x += r.vx * 0.5; r.y += r.vy * 0.5; if (r.x 480) r.vx *= -1; if (r.y 340) r.vy *= -1; } for (var i = 0; i < reactantsB.length; i++) { var r = reactantsB[i]; if (!r.active) continue; var dx = centerX – r.x; var dy = 320 – r.y + Math.cos(r.x * 0.025) * 40; r.x += dx * 0.001 * (1 + progress * 0.3); r.y += dy * 0.0005; r.x += r.vx * 0.5; r.y += r.vy * 0.5; if (r.x 480) r.vx *= -1; if (r.y 340) r.vy *= -1; } var toRemoveA = [], toRemoveB = []; for (var i = 0; i < reactantsA.length; i++) { var a = reactantsA[i]; if (!a.active) continue; for (var j = 0; j < reactantsB.length; j++) { var b = reactantsB[j]; if (!b.active) continue; if (checkCollision(a, b) && Math.random() 0.3) { for (var k = 0; k < products.length; k++) { if (!products[k].active) { products[k].active = true; products[k].x = (a.x + b.x) / 2 + (Math.random() – 0.5) * 20; products[k].y = (a.y + b.y) / 2 + (Math.random() – 0.5) * 20; products[k].vx = (a.vx + b.vx) / 2 + (Math.random() – 0.5) * 0.3; products[k].vy = (a.vy + b.vy) / 2 + (Math.random() – 0.5) * 0.3; collisions.push({ x: (a.x + b.x) / 2, y: (a.y + b.y) / 2, size: 20, life: 0.7 }); toRemoveA.push(i); toRemoveB.push(j); break; } } } } } toRemoveA.sort(function(a, b) { return b – a; }); toRemoveB.sort(function(a, b) { return b – a; }); for (var i = 0; i < toRemoveA.length; i++) reactantsA[toRemoveA[i]].active = false; for (var i = 0; i < toRemoveB.length; i++) reactantsB[toRemoveB[i]].active = false; }for (var i = 0; i < products.length; i++) { var p = products[i]; if (!p.active) continue; var targetX = 600 – (1 – progress) * 80; p.x += (targetX – p.x) * 0.003; p.x += p.vx; p.y += p.vy; if (p.x 760) p.vx *= -1; if (p.y 340) p.vy *= -1; }if (mode === ‘nonspontaneous’) { var time = Date.now() / 1000; for (var i = 0; i < energyParticles.length; i++) { var p = energyParticles[i]; p.x += Math.sin(time * 0.5 + p.phase) * 0.3; p.y += Math.cos(time * 0.4 + p.phase * 0.7) * 0.3; p.x += p.vx * 0.05; p.y += p.vy * 0.05; if (p.x canvas.width – 20) p.vx *= -1; if (p.y canvas.height – 20) p.vy *= -1; } }var activeA = 0, activeB = 0; for (var i = 0; i < reactantsA.length; i++) if (reactantsA[i].active) activeA++; for (var i = 0; i < reactantsB.length; i++) if (reactantsB[i].active) activeB++; if (activeA < 4) { for (var i = 0; i = 8) break; } } } if (activeB < 4) { for (var i = 0; i = 8) break; } } } updateMeter(); }function animate() { if (!isRunning) return; update(); draw(); animId = requestAnimationFrame(animate); }// Buttons var btnSpont = document.getElementById(‘btnSpont’); var btnNonSpont = document.getElementById(‘btnNonSpont’); var btnReset = document.getElementById(‘btnReset’); var btnPause = document.getElementById(‘btnPause’); var statusEl = document.getElementById(‘simStatus’);if (btnSpont) { btnSpont.addEventListener(‘click’, function() { mode = ‘spontaneous’; btnSpont.className = ‘active-spont’; btnNonSpont.className = ”; speed = 0.0025; if (statusEl) statusEl.innerHTML = ‘Spontaneous – Reaction proceeds naturally’; var meter = document.getElementById(‘simMeter’); if (meter) meter.className = ‘sim-meter-fill spont-fill’; progress = 0.0; initParticles(); updateMeter(); }); }if (btnNonSpont) { btnNonSpont.addEventListener(‘click’, function() { mode = ‘nonspontaneous’; btnNonSpont.className = ‘active-nonspont’; btnSpont.className = ”; speed = 0.0015; if (statusEl) statusEl.innerHTML = ‘Non-Spontaneous – Requires continuous energy input’; var meter = document.getElementById(‘simMeter’); if (meter) meter.className = ‘sim-meter-fill nonspont-fill’; progress = 0.0; initParticles(); updateMeter(); }); }if (btnReset) { btnReset.addEventListener(‘click’, function() { progress = 0.0; initParticles(); updateMeter(); }); }if (btnPause) { btnPause.addEventListener(‘click’, function() { isRunning = !isRunning; btnPause.textContent = isRunning ? ‘Pause’ : ‘Play’; if (isRunning) animate(); }); }draw(); animate(); })();

Download Complete Notes Below

Leave a Comment

Your email address will not be published. Required fields are marked *

Advertisement
Scroll to Top