Choose your plan

/* ================= Listing plans (/choose-plan/; /pricing/ redirects here) on MSC 2.0, from Brydee’s 28 Sep 2026 draft ================= Drawn from this page’s own HTML. The plans shortcode (msc_plans) is not used here: its buttons are plain links, so they are copied exactly. Prices, features and limits are the live page’s. *//* Heading: the H1 “Choose your plan” is the small gold label; Brydee’s heading is the H2 under it */ .lhead{padding:64px 0 10px;text-align:center} .lhead .kicker{display:inline-flex;align-items:center;gap:8px;font-family:var(–mono);font-size:12px;font-weight:500;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(–gold-text)} .lhead .kicker::before{content:””;flex:none;width:7px;height:7px;border-radius:50%;background:currentColor} .lhead h2{max-width:880px;margin:18px auto 0;font-size:clamp(46px,6vw,86px);line-height:1.04} .lhead .lede{max-width:640px;margin:20px auto 0} @media (max-width:640px){.lhead{padding-top:40px}.lhead .lede{font-size:17px}}/* The two plans, centred side by side: ivory cards, a gold “Most popular” pill, gold-dot feature lists */ .lplans-sec{padding:20px 0 120px} @media (max-width:640px){.lplans-sec{padding-bottom:80px}} .lplans{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:900px;margin:40px auto 0} @media (max-width:760px){.lplans{grid-template-columns:1fr;gap:34px;max-width:520px}} .lplan{position:relative;display:flex;flex-direction:column;gap:12px;padding:30px 28px;background:var(–card);border:1px solid var(–hair);border-radius:24px} .lplan.hot{border:1.5px solid var(–ink);box-shadow:10px 10px 0 var(–accent-soft)} .lplan .pill{position:absolute;top:-13px;left:50%;transform:translateX(-50%);padding:5px 12px;border:1px solid var(–ink);border-radius:999px;background:var(–accent);color:var(–ink);font-family:var(–mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap} .lplan h3{font-family:var(–serif);font-size:32px;font-weight:400;line-height:1.1} .lplan .sub{margin-top:-6px;font-size:15px;color:var(–muted)} .lplan .price{font-family:var(–serif);font-size:58px;line-height:1} .lplan .price small{font-size:22px;color:var(–muted)} .lplan .per{margin-top:6px;font-family:var(–mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(–muted)} .lplan ul{list-style:none;display:grid;gap:10px;margin:4px 0 8px;padding-top:14px;border-top:1px dashed var(–hair)} .lplan li{display:grid;grid-template-columns:16px 1fr;gap:8px;font-size:15px;line-height:1.5;color:var(–ink-2)} .lplan li::before{content:””;width:8px;height:8px;margin-top:7px;border-radius:50%;background:var(–accent)} .lplan li strong{font-weight:500;color:var(–ink)} .lplan .btn{margin-top:auto;justify-content:center} .lplan .fine{font-size:13px;text-align:center;color:var(–muted)}/* “Cheaper than a badge that sends you nothing”: the live figures as bars */ .lcmp{padding:100px 0} @media (max-width:640px){.lcmp{padding:80px 0}} .lcmp-head{margin-bottom:44px;text-align:center} .lcmp-head .mono{margin-bottom:14px} .lcmp-head h2{margin:0 auto;color:var(–paper)} .cmp{list-style:none;display:grid;gap:18px;max-width:760px;margin:0 auto} .cbar{display:grid;grid-template-columns:220px 1fr;gap:16px;align-items:center} @media (max-width:640px){.cbar{grid-template-columns:1fr;gap:6px}} .cbar .lbl{font-size:15px;line-height:1.4;color:#E7EFEA} .cbar .lbl small{display:block;margin-top:2px;font-family:var(–mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#9FB6AC} .cbar .track{display:block;height:38px;border-radius:10px;background:#0F4A3A;overflow:hidden} .cbar .fill{display:flex;align-items:center;justify-content:flex-end;width:var(–w);height:100%;padding:0 12px;border-radius:10px;background:#2C6B57;color:var(–paper);white-space:nowrap} .cbar .fill b{font-family:var(–serif);font-size:20px;font-weight:400} .cbar.us .fill{background:var(–accent);color:var(–ink)} /* With JavaScript the bars grow once, as they come into view (never with “reduce motion”). Without it they are simply drawn full. The transition is on the “in” state only, so setting the bars up never animates them backwards. */ .cmp.grow .fill{width:24px} .cmp.grow .fill b{opacity:0} .cmp.grow.in .fill{width:var(–w);transition:width 1.4s cubic-bezier(.2,.7,.2,1)} .cmp.grow.in .fill b{opacity:1;transition:opacity .4s ease 1s} .cmp.grow.in .cbar:nth-child(2) .fill{transition-delay:.15s} .cmp.grow.in .cbar:nth-child(3) .fill{transition-delay:.3s} .cmp-note{max-width:600px;margin:32px auto 0;text-align:center;font-size:17px;font-weight:300;line-height:1.6;color:#CFDDD6} .promises{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:10px 26px;margin-top:40px} .promises li{display:inline-flex;align-items:center;gap:10px;font-size:15px;color:#E7EFEA} .promises li::before{content:””;flex:none;width:9px;height:9px;border-radius:50%;background:var(–accent)}/* Join the network */ .joinwrap{padding-top:100px;padding-bottom:110px} @media (max-width:640px){.joinwrap{padding-top:80px;padding-bottom:80px}} .joinband{display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:center;padding:52px 50px;background:var(–ink);color:var(–paper);border-radius:28px} @media (max-width:860px){.joinband{grid-template-columns:1fr;padding:36px 24px}} .joinband .mono{color:#9FB6AC} .joinband h2{margin-top:14px;font-size:clamp(38px,4.6vw,64px);color:var(–paper)} .joinband p{max-width:460px;margin:14px 0 26px;font-size:17px;font-weight:300;line-height:1.6;color:#CFDDD6} .joinband .btns{display:flex;flex-wrap:wrap;gap:12px} .joinband .pic{width:100%;aspect-ratio:160/110;color:#F7F1E6;–paper:#083a2d} .joinband .pic svg{width:100%;height:auto;overflow:visible} @media (max-width:860px){.joinband .pic{max-width:260px;margin:0 auto}} .btn-paper{background:var(–paper);border-color:var(–paper);color:var(–ink)} .btn-paper:hover{background:var(–accent);border-color:var(–accent)}/* Drawing motion (the chrome’s “reduce motion” rule stops it) */ .pin{animation:pin 2.2s ease-in-out infinite} @keyframes pin{0%,100%{transform:translateY(0)}45%{transform:translateY(-9px)}}

Choose your plan

Be found by the people already searching.

Start free in under a minute. Upgrade whenever it pays for itself.

Free

Get found

£0
Forever · no card required
  • Your company profile in the UK’s safety & FM directory
  • 1 service, within a 25-mile radius of your base
  • Company overview & insurance details
  • Clients contact you through the site
Start free

Live in minutes, free forever

Featured

Top of local searches

£99 / year
About £1.90 a week, billed yearly
  • Pinned at the top of searches for your services, one of three Featured companies (we rotate them daily)
  • Unlimited services + nationwide coverage
  • Register checks on your profile: a dated green chip for each public register you hold (OSHCR, BAFE SP205, LCA, NFRAR, Companies House)
  • A Featured badge on your search listing and profile
Go Featured →

About 7× the views. On mysafety, Featured profiles are seen around seven times as often as free ones.

(function(){ /* Listing plans: the price bars grow once, as they come into view, and the “Join the network” drawing (the steps with a pin on top, from the About page’s kit; 1 Oct 2026: the steps get the kit’s gold offset shadow, in place of a pale block that didn’t follow their shape). Without JavaScript, or with “reduce motion”, the bars are simply drawn full. */ var cmp=document.getElementById(‘cmp’); var still=!window.matchMedia||window.matchMedia(‘(prefers-reduced-motion: reduce)’).matches; if(cmp&&!still&&’IntersectionObserver’ in window){ cmp.classList.add(‘grow’); var io=new IntersectionObserver(function(entries){ entries.forEach(function(e){if(e.isIntersecting){cmp.classList.add(‘in’);io.disconnect();}}); },{threshold:.4}); io.observe(cmp); }var join=document.getElementById(‘jArt’); if(!join)return; var G=’var(–accent)’, GS=’var(–accent-soft)’, P=’var(–paper)’; var LN=’fill=”none” stroke=”currentColor” stroke-width=”1.7″ stroke-linecap=”round” stroke-linejoin=”round”‘; join.innerHTML=’‘; })();