{"id":11895,"date":"2025-06-14T05:13:00","date_gmt":"2025-06-14T05:13:00","guid":{"rendered":"https:\/\/tradeit.gg\/blog\/?p=11895"},"modified":"2026-07-20T22:49:11","modified_gmt":"2026-07-20T22:49:11","slug":"how-to-make-a-private-match-in-cs2","status":"publish","type":"post","link":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/","title":{"rendered":"How to Make a Private Match in CS2 (2026)"},"content":{"rendered":"<!--\nTRADEIT CONTENT REFRESH: PUBLISHING METADATA\nStatus \/ fix type: NPA revision + merge; full rewrite in place\nCanonical URL: KEEP: https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/\nSEO title: How to Make a Private Match in CS2 (2026) - Tradeit\nMeta description: Set up CS2 private matches in 2026: pool codes, custom rules, workshop maps, bots, and dedicated servers. Full step-by-step guide with troubleshooting.\nPrimary keyword: cs2 private matchmaking; how to make a private match in cs2\nSecondary keywords: how to create a private match in cs2; how to do a private match in cs2\nLSI target: how does private matchmaking work in cs2\nRelated targets: how to unlock private matchmaking in cs2; how to start private matchmaking cs2; cs2 private server; private lobby cs2\n\nMERGE \/ REDIRECT ACTION AFTER PUBLICATION:\n301 redirect https:\/\/tradeit.gg\/blog\/how-to-play-practice-with-friends-in-cs2\/\nto https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/\nDo not add an internal link to the redirected URL.\n\nINTENT GUARDRAIL:\nKeep \/blog\/1v1-in-cs2\/ separate. This article cross-links to it once and does not reproduce its 1v1-specific command set, map list, or community-server coverage.\n\n2026 ACCURACY QA:\n- Valve Private Matchmaking is a code-gated, unrated Premier match on a Valve server.\n- One launched match requires 10 human players. Bots do not fill missing pool slots.\n- The current pool code is a long, hyphenated matchmaking code, not a six-digit PIN.\n- Built-in Private Matchmaking does not expose arbitrary map selection, bot controls, round settings, a separate password field, or a verified browser join URL.\n- Custom maps, rules, and bots belong to Practice\/Workshop or dedicated-server flows.\n- Dedicated-server examples use App ID 730 and the current cs2 binary.\n\nIMAGE PRODUCTION NOTE:\nReplace each visible image placeholder with a current CS2 capture before publication. Keep the supplied alt text exactly. Any composited annotations must distinguish Valve Private Matchmaking from Practice\/Workshop and dedicated-server controls; do not fabricate a customization panel inside the Valve pool UI.\nResearch refresh: 2026-07-20\n-->\n\n\n<style>\n  \/* ==================================================================\n     Tradeit.gg blog widget theme v2 - CS2 private matches\n     White + purple: #615DFC primary \/ #54595F body \/ Roboto 600\n     ================================================================== *\/\n  .ti-cs2-ui {\n    --ti-ink: #1F2130;\n    --ti-text: #1F2130;\n    --ti-muted: #54595F;\n    --ti-faint: #7E828D;\n    --ti-card: #FFFFFF;\n    --ti-panel: #F7F6FF;\n    --ti-tint: #F4F3FF;\n    --ti-tint-2: #EEEDFF;\n    --ti-line: #ECEBF7;\n    --ti-line-2: #DBDAF2;\n    --ti-line-3: #C9C6FF;\n    --ti-accent: #615DFC;\n    --ti-accent-deep: #4B47D6;\n    --ti-accent-dark: #4F4BE0;\n    --ti-grad-2: #9C7DFF;\n    --ti-dark: #1B1D2A;\n    --ti-code: #CBC9FF;\n    --ti-green: #12B76A;\n    --ti-amber: #F79009;\n    --ti-red: #E5484D;\n    --ti-radius: 18px;\n    --ti-shadow: 0 1px 2px rgba(23, 23, 48, 0.05), 0 12px 32px rgba(97, 93, 252, 0.08);\n    --ti-shadow-hover: 0 2px 4px rgba(23, 23, 48, 0.05), 0 18px 44px rgba(97, 93, 252, 0.16);\n    --ti-ease: cubic-bezier(0.22, 0.8, 0.3, 1);\n    color: var(--ti-muted);\n    color-scheme: light;\n    font-family: var(--e-global-typography-primary-font-family, Roboto), Roboto, -apple-system, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n    line-height: 1.6;\n    margin: 36px 0;\n  }\n\n  .ti-cs2-ui *,\n  .ti-cs2-ui *::before,\n  .ti-cs2-ui *::after {\n    box-sizing: border-box;\n  }\n\n  .ti-cs2-ui ::selection {\n    background: rgba(97, 93, 252, 0.22);\n  }\n\n  \/* --- Section cards: white, gradient keyline, dot-grid texture ------ *\/\n  .ti-cs2-ui.ti-card {\n    position: relative;\n    overflow: hidden;\n    background:\n      radial-gradient(130% 90% at 0% 0%, rgba(97, 93, 252, 0.055), transparent 42%),\n      var(--ti-card);\n    border: 1px solid var(--ti-line);\n    border-radius: var(--ti-radius);\n    box-shadow: var(--ti-shadow);\n    transition: border-color 0.3s var(--ti-ease), box-shadow 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui.ti-card::before {\n    content: \"\";\n    position: absolute;\n    inset: 0 0 auto 0;\n    height: 3px;\n    background: linear-gradient(90deg, var(--ti-accent) 0%, var(--ti-grad-2) 45%, rgba(156, 125, 255, 0) 92%);\n    pointer-events: none;\n  }\n\n  .ti-cs2-ui.ti-card::after {\n    content: \"\";\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    width: 160px;\n    height: 92px;\n    background-image: radial-gradient(rgba(97, 93, 252, 0.38) 1px, transparent 1.5px);\n    background-size: 12px 12px;\n    -webkit-mask-image: radial-gradient(130% 100% at 100% 0%, #000 25%, transparent 72%);\n    mask-image: radial-gradient(130% 100% at 100% 0%, #000 25%, transparent 72%);\n    opacity: 0.25;\n    transition: opacity 0.3s var(--ti-ease);\n    pointer-events: none;\n  }\n\n  .ti-cs2-ui.ti-card:hover {\n    border-color: #DDDBF8;\n    box-shadow: var(--ti-shadow-hover);\n  }\n\n  .ti-cs2-ui.ti-card:hover::after {\n    opacity: 0.5;\n  }\n\n  .ti-cs2-ui .ti-card-inner {\n    position: relative;\n    padding: 26px;\n    z-index: 1;\n  }\n\n  \/* --- Eyebrow \/ title \/ copy ----------------------------------------- *\/\n  .ti-cs2-ui .ti-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    color: var(--ti-accent-deep);\n    font-size: 12px;\n    font-weight: 600;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    margin-bottom: 12px;\n  }\n\n  .ti-cs2-ui .ti-eyebrow::before {\n    content: \"\\2726\";\n    background: linear-gradient(135deg, var(--ti-accent), var(--ti-grad-2));\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent;\n    font-size: 14px;\n    line-height: 1;\n  }\n\n  .ti-cs2-ui .ti-title {\n    margin: 0 0 10px;\n    font-size: clamp(21px, 2.6vw, 28px);\n    font-weight: 600;\n    letter-spacing: -0.015em;\n    line-height: 1.22;\n    color: var(--ti-ink);\n    text-wrap: balance;\n  }\n\n  .ti-cs2-ui .ti-copy-text,\n  .ti-cs2-ui .ti-body {\n    color: var(--ti-muted);\n    margin: 0 0 18px;\n    line-height: 1.65;\n  }\n\n  .ti-cs2-ui ol,\n  .ti-cs2-ui li,\n  .ti-cs2-ui li > div {\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  \/* --- Grids \/ mini cards ----------------------------------------------- *\/\n  .ti-cs2-ui .ti-grid {\n    display: grid;\n    gap: 14px;\n  }\n\n  .ti-cs2-ui .ti-grid-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n\n  .ti-cs2-ui .ti-grid-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n  }\n\n  .ti-cs2-ui .ti-mini-card {\n    background: var(--ti-card);\n    border: 1px solid var(--ti-line);\n    border-radius: 14px;\n    padding: 18px;\n    box-shadow: 0 1px 2px rgba(23, 23, 48, 0.04);\n    transition: transform 0.3s var(--ti-ease), border-color 0.3s var(--ti-ease), box-shadow 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui .ti-mini-card:hover {\n    transform: translateY(-3px);\n    border-color: var(--ti-line-3);\n    box-shadow: 0 14px 28px rgba(97, 93, 252, 0.13);\n  }\n\n  .ti-cs2-ui .ti-mini-card h3,\n  .ti-cs2-ui .ti-mini-card h4 {\n    margin: 0 0 8px;\n    color: var(--ti-ink);\n    font-size: 17px;\n    font-weight: 600;\n    line-height: 1.3;\n  }\n\n  .ti-cs2-ui .ti-mini-card p {\n    margin: 0;\n    color: var(--ti-muted);\n    font-size: 14.5px;\n    line-height: 1.6;\n  }\n\n  \/* --- Console rows: dark terminal chips on the white page --------------- *\/\n  .ti-cs2-ui .ti-code-row {\n    display: flex;\n    align-items: stretch;\n    gap: 10px;\n    margin: 14px 0;\n    width: 100%;\n    min-width: 0;\n  }\n\n  .ti-cs2-ui .ti-code-row code,\n  .ti-cs2-ui .ti-code-block {\n    flex: 1;\n    display: block;\n    width: 100%;\n    padding: 14px 16px 14px 34px;\n    position: relative;\n    background: linear-gradient(180deg, #20222F 0%, var(--ti-dark) 100%);\n    border: 1px solid #2A2D40;\n    border-radius: 12px;\n    color: var(--ti-code);\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n    font-size: 14px;\n    line-height: 1.5;\n    overflow-x: auto;\n    white-space: nowrap;\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 8px 20px rgba(27, 29, 42, 0.18);\n    transition: box-shadow 0.3s var(--ti-ease), border-color 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui .ti-code-row code::before,\n  .ti-cs2-ui .ti-code-block::before {\n    content: \">\";\n    position: absolute;\n    left: 14px;\n    color: var(--ti-grad-2);\n    font-weight: 700;\n  }\n\n  .ti-cs2-ui .ti-code-row:hover code {\n    border-color: rgba(97, 93, 252, 0.55);\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 10px 24px rgba(97, 93, 252, 0.25);\n  }\n\n\n  \/* --- Buttons -------------------------------------------------------------- *\/\n  .ti-cs2-ui .ti-button,\n  .ti-cs2-ui .ti-copy {\n    appearance: none;\n    border: 0;\n    border-radius: 12px;\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    min-height: 46px;\n    padding: 0 20px;\n    background: var(--ti-accent);\n    color: #fff;\n    font-family: inherit;\n    font-size: 15px;\n    font-weight: 600;\n    letter-spacing: 0.01em;\n    text-decoration: none;\n    white-space: nowrap;\n    box-shadow: 0 8px 20px rgba(97, 93, 252, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.18);\n    transition: transform 0.3s var(--ti-ease), box-shadow 0.3s var(--ti-ease), background 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui a.ti-button::after {\n    content: \"\\2192\";\n    display: inline-block;\n    transition: transform 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui a.ti-button:hover::after {\n    transform: translateX(4px);\n  }\n\n  .ti-cs2-ui .ti-button:hover,\n  .ti-cs2-ui .ti-copy:hover {\n    background: var(--ti-accent-dark);\n    transform: translateY(-2px);\n    box-shadow: 0 14px 30px rgba(97, 93, 252, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.18);\n  }\n\n  .ti-cs2-ui .ti-button:active,\n  .ti-cs2-ui .ti-copy:active {\n    transform: translateY(0);\n  }\n\n  .ti-cs2-ui .ti-button:focus-visible,\n  .ti-cs2-ui .ti-copy:focus-visible {\n    outline: 3px solid rgba(97, 93, 252, 0.35);\n    outline-offset: 2px;\n  }\n\n  .ti-cs2-ui .ti-button-secondary {\n    background: var(--ti-card);\n    color: var(--ti-accent-deep);\n    border: 1px solid var(--ti-line-2);\n    box-shadow: 0 1px 2px rgba(23, 23, 48, 0.05);\n  }\n\n  .ti-cs2-ui .ti-button-secondary:hover {\n    background: var(--ti-tint);\n    border-color: var(--ti-accent);\n    box-shadow: 0 10px 22px rgba(97, 93, 252, 0.16);\n  }\n\n  \/* --- Badges: tinted chips with status dots --------------------------------- *\/\n  .ti-cs2-ui .ti-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    width: fit-content;\n    border-radius: 999px;\n    padding: 6px 12px;\n    font-size: 12px;\n    font-weight: 600;\n    letter-spacing: 0.02em;\n    line-height: 1;\n    border: 1px solid transparent;\n  }\n\n  .ti-cs2-ui .ti-badge::before {\n    content: \"\";\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: currentColor;\n  }\n\n  .ti-cs2-ui .ti-badge-green {\n    background: #EAFBF2;\n    color: #0E9F6E;\n    border-color: #BFE9D4;\n  }\n\n  .ti-cs2-ui .ti-badge-red {\n    background: #FEECEE;\n    color: #C0353D;\n    border-color: #F5C6CB;\n  }\n\n  .ti-cs2-ui .ti-badge-orange {\n    background: #FFF4E5;\n    color: #B54708;\n    border-color: #F4DDB8;\n  }\n\n  .ti-cs2-ui .ti-badge-blue {\n    background: var(--ti-tint-2);\n    color: var(--ti-accent-deep);\n    border-color: #D9D7FA;\n  }\n\n  \/* --- Tables -------------------------------------------------------------- *\/\n  .ti-cs2-ui .ti-table-wrap {\n    overflow-x: auto;\n    border-radius: 14px;\n    border: 1px solid var(--ti-line);\n    background: var(--ti-card);\n    box-shadow: 0 1px 2px rgba(23, 23, 48, 0.04);\n  }\n\n  .ti-cs2-ui .ti-table {\n    width: 100%;\n    min-width: 680px;\n    border-collapse: collapse;\n  }\n\n  .ti-cs2-ui .ti-table th,\n  .ti-cs2-ui .ti-table td {\n    padding: 14px 16px;\n    text-align: left;\n    border-bottom: 1px solid var(--ti-line);\n    vertical-align: top;\n  }\n\n  .ti-cs2-ui .ti-table th {\n    color: var(--ti-accent-deep);\n    background: var(--ti-tint);\n    font-size: 11.5px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n  }\n\n  .ti-cs2-ui .ti-table td {\n    color: var(--ti-muted);\n    font-size: 14.5px;\n  }\n\n  .ti-cs2-ui .ti-table td strong {\n    color: var(--ti-ink);\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui .ti-table tbody tr:nth-child(even) {\n    background: #FBFBFF;\n  }\n\n  .ti-cs2-ui .ti-table tbody tr {\n    transition: background 0.2s ease;\n  }\n\n  .ti-cs2-ui .ti-table tbody tr:hover {\n    background: var(--ti-tint);\n  }\n\n  .ti-cs2-ui .ti-table tr:last-child td {\n    border-bottom: 0;\n  }\n\n  \/* --- Interactive tool panels (lavender wash) -------------------------------- *\/\n  .ti-cs2-ui[data-ti-private-picker] {\n    background:\n      radial-gradient(130% 90% at 0% 0%, rgba(97, 93, 252, 0.07), transparent 46%),\n      var(--ti-panel);\n    border-color: #E4E2FA;\n  }\n\n  \/* --- Form controls ------------------------------------------------------------ *\/\n  .ti-cs2-ui .ti-control {\n    display: grid;\n    gap: 8px;\n    margin: 14px 0;\n  }\n\n  .ti-cs2-ui .ti-control label {\n    color: var(--ti-ink);\n    font-size: 13.5px;\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui .ti-control input,\n  .ti-cs2-ui .ti-control select {\n    width: 100%;\n    border: 1px solid var(--ti-line-2);\n    border-radius: 12px;\n    background: var(--ti-card);\n    color: var(--ti-ink);\n    min-height: 46px;\n    padding: 0 14px;\n    font: inherit;\n    box-shadow: 0 1px 2px rgba(23, 23, 48, 0.04);\n    transition: border-color 0.25s var(--ti-ease), box-shadow 0.25s var(--ti-ease);\n  }\n\n  .ti-cs2-ui .ti-control input::placeholder {\n    color: #A0A3B8;\n  }\n\n  .ti-cs2-ui .ti-control input:hover,\n  .ti-cs2-ui .ti-control select:hover {\n    border-color: #C2BFF0;\n  }\n\n  .ti-cs2-ui .ti-control input:focus,\n  .ti-cs2-ui .ti-control select:focus {\n    border-color: var(--ti-accent);\n    box-shadow: 0 0 0 4px rgba(97, 93, 252, 0.16);\n    outline: none;\n  }\n\n  .ti-cs2-ui .ti-result {\n    margin-top: 14px;\n    padding: 16px 18px;\n    background: var(--ti-card);\n    border: 1px solid #E0DEF8;\n    border-left: 3px solid var(--ti-accent);\n    border-radius: 12px;\n    color: var(--ti-muted);\n    box-shadow: 0 1px 2px rgba(23, 23, 48, 0.04);\n  }\n\n  .ti-cs2-ui .ti-result strong,\n  .ti-cs2-ui .ti-result h3 {\n    color: var(--ti-ink);\n    font-weight: 600;\n  }\n\n  \/* --- Numbered steps: gradient coins -------------------------------------------- *\/\n  .ti-cs2-ui .ti-steps {\n    counter-reset: ti-step;\n    display: grid;\n    gap: 12px;\n    margin: 16px 0 0;\n    padding: 0;\n    list-style: none;\n  }\n\n  .ti-cs2-ui .ti-steps li {\n    counter-increment: ti-step;\n    display: grid;\n    grid-template-columns: 36px 1fr;\n    gap: 14px;\n    align-items: start;\n    color: var(--ti-muted);\n  }\n\n  .ti-cs2-ui .ti-steps li > div {\n    grid-column: 2 \/ -1;\n    justify-self: stretch;\n    width: auto;\n    max-width: 100%;\n    min-width: 0;\n  }\n\n  .ti-cs2-ui .ti-steps li::before {\n    content: counter(ti-step);\n    width: 36px;\n    height: 36px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    background: linear-gradient(135deg, var(--ti-accent), var(--ti-grad-2));\n    border-radius: 12px;\n    color: #fff;\n    font-weight: 600;\n    box-shadow: 0 6px 14px rgba(97, 93, 252, 0.3);\n    transition: transform 0.3s var(--ti-ease), box-shadow 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui .ti-steps li:hover::before {\n    transform: scale(1.08) rotate(-3deg);\n    box-shadow: 0 10px 20px rgba(97, 93, 252, 0.4);\n  }\n\n  \/* --- Accordion --------------------------------------------------------------------- *\/\n  .ti-cs2-ui.ti-accordion details {\n    background: var(--ti-card);\n    border: 1px solid var(--ti-line);\n    border-radius: 14px;\n    padding: 0;\n    overflow: hidden;\n    transition: border-color 0.3s var(--ti-ease), box-shadow 0.3s var(--ti-ease), background 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui.ti-accordion details + details {\n    margin-top: 10px;\n  }\n\n  .ti-cs2-ui.ti-accordion details:hover {\n    border-color: var(--ti-line-3);\n    box-shadow: 0 8px 20px rgba(97, 93, 252, 0.1);\n  }\n\n  .ti-cs2-ui.ti-accordion details[open] {\n    background: #FBFAFF;\n    border-color: var(--ti-line-3);\n    box-shadow: inset 3px 0 0 var(--ti-accent), 0 8px 20px rgba(97, 93, 252, 0.1);\n  }\n\n  .ti-cs2-ui.ti-accordion summary {\n    cursor: pointer;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 12px;\n    padding: 17px 18px;\n    color: var(--ti-ink);\n    font-weight: 600;\n    list-style: none;\n    transition: color 0.2s ease;\n  }\n\n  .ti-cs2-ui.ti-accordion summary:hover {\n    color: var(--ti-accent-deep);\n  }\n\n  .ti-cs2-ui.ti-accordion summary::-webkit-details-marker {\n    display: none;\n  }\n\n  .ti-cs2-ui.ti-accordion summary::after {\n    content: \"+\";\n    flex: 0 0 auto;\n    display: grid;\n    place-items: center;\n    width: 28px;\n    height: 28px;\n    border-radius: 9px;\n    background: var(--ti-tint-2);\n    border: 1px solid #D9D7FA;\n    color: var(--ti-accent-deep);\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 1;\n    transition: transform 0.35s var(--ti-ease), background 0.25s ease, color 0.25s ease, border-color 0.25s ease;\n  }\n\n  .ti-cs2-ui.ti-accordion details[open] summary::after {\n    content: \"+\";\n    transform: rotate(45deg);\n    background: var(--ti-accent);\n    border-color: var(--ti-accent);\n    color: #fff;\n  }\n\n  .ti-cs2-ui.ti-accordion .ti-answer {\n    padding: 0 18px 18px;\n    color: var(--ti-muted);\n    line-height: 1.65;\n  }\n\n  \/* --- Notes ------------------------------------------------------------------------ *\/\n  .ti-cs2-ui .ti-note {\n    border-left: 3px solid var(--ti-accent);\n    padding: 13px 16px;\n    background: var(--ti-tint);\n    border-radius: 12px;\n    color: var(--ti-muted);\n    line-height: 1.6;\n    font-size: 14.5px;\n  }\n\n  \/* --- CTA: the one loud block - full purple gradient with ring texture ---------------- *\/\n  .ti-cs2-ui.ti-cta {\n    position: relative;\n    overflow: hidden;\n    display: grid;\n    grid-template-columns: 1fr auto;\n    gap: 18px;\n    align-items: center;\n    background:\n      radial-gradient(120% 160% at 100% 0%, rgba(255, 255, 255, 0.14), transparent 52%),\n      linear-gradient(115deg, #5B57F2 0%, #6E5CFF 55%, #8F6FFF 100%);\n    border: 0;\n    border-radius: var(--ti-radius);\n    padding: 28px;\n    box-shadow: 0 18px 40px rgba(97, 93, 252, 0.35);\n    transition: box-shadow 0.3s var(--ti-ease), transform 0.3s var(--ti-ease);\n  }\n\n  .ti-cs2-ui.ti-cta::after {\n    content: \"\";\n    position: absolute;\n    right: -80px;\n    top: -90px;\n    width: 280px;\n    height: 280px;\n    border-radius: 50%;\n    background: repeating-radial-gradient(circle at center, rgba(255, 255, 255, 0.16) 0 2px, transparent 2px 20px);\n    pointer-events: none;\n    transition: transform 0.6s var(--ti-ease);\n  }\n\n  .ti-cs2-ui.ti-cta:hover {\n    box-shadow: 0 24px 54px rgba(97, 93, 252, 0.45);\n  }\n\n  .ti-cs2-ui.ti-cta:hover::after {\n    transform: scale(1.15) rotate(10deg);\n  }\n\n  .ti-cs2-ui.ti-cta h3 {\n    margin: 0 0 6px;\n    color: #fff;\n    font-size: 22px;\n    font-weight: 600;\n    letter-spacing: -0.01em;\n    position: relative;\n    z-index: 1;\n  }\n\n  .ti-cs2-ui.ti-cta p {\n    margin: 0;\n    color: rgba(255, 255, 255, 0.85);\n    position: relative;\n    z-index: 1;\n  }\n\n  .ti-cs2-ui.ti-cta .ti-button {\n    background: #fff;\n    color: var(--ti-accent-deep);\n    box-shadow: 0 10px 24px rgba(23, 23, 48, 0.25);\n    position: relative;\n    z-index: 1;\n  }\n\n  .ti-cs2-ui.ti-cta .ti-button:hover {\n    background: #F4F3FF;\n    box-shadow: 0 16px 32px rgba(23, 23, 48, 0.3);\n  }\n\n  \/* --- Responsive \/ motion --------------------------------------------------------- *\/\n  @media (max-width: 760px) {\n    .ti-cs2-ui .ti-grid-2,\n    .ti-cs2-ui .ti-grid-3 {\n      grid-template-columns: 1fr;\n    }\n\n    .ti-cs2-ui .ti-card-inner {\n      padding: 20px;\n    }\n\n    .ti-cs2-ui .ti-code-row {\n      flex-direction: column;\n      align-items: stretch;\n    }\n\n    .ti-cs2-ui.ti-cta {\n      grid-template-columns: 1fr;\n      padding: 22px;\n    }\n\n    .ti-cs2-ui .ti-copy,\n    .ti-cs2-ui .ti-button {\n      width: 100%;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .ti-cs2-ui *,\n    .ti-cs2-ui *::before,\n    .ti-cs2-ui *::after {\n      transition: none !important;\n      animation: none !important;\n    }\n\n    .ti-cs2-ui .ti-mini-card:hover,\n    .ti-cs2-ui .ti-button:hover,\n    .ti-cs2-ui .ti-copy:hover,\n    .ti-cs2-ui .ti-steps li:hover::before,\n    .ti-cs2-ui.ti-cta:hover::after {\n      transform: none;\n    }\n  }\n\n\n  \/* --- Private match article extensions, built from the same tokens -------- *\/\n  .ti-cs2-anchor {\n    scroll-margin-top: 28px;\n  }\n\n  .ti-cs2-ui .ti-card-inner > .ti-copy-text:last-child,\n  .ti-cs2-ui .ti-card-inner > .ti-note:last-child {\n    margin-bottom: 0;\n  }\n\n  .ti-cs2-ui .ti-private-answer-grid {\n    margin-top: 18px;\n  }\n\n  .ti-cs2-ui .ti-private-answer-grid .ti-mini-card > .ti-badge {\n    margin-bottom: 12px;\n  }\n\n  .ti-cs2-ui .ti-private-answer-grid .ti-mini-card > strong {\n    display: block;\n    margin-bottom: 7px;\n    color: var(--ti-ink);\n    font-size: 16px;\n    font-weight: 600;\n    line-height: 1.35;\n  }\n\n  .ti-cs2-ui .ti-private-icon {\n    display: grid;\n    place-items: center;\n    width: 42px;\n    height: 42px;\n    margin-bottom: 14px;\n    border: 1px solid #D9D7FA;\n    border-radius: 13px;\n    background: var(--ti-tint-2);\n    color: var(--ti-accent-deep);\n    font-size: 16px;\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui .ti-tag-row {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    margin-top: 14px;\n  }\n\n  .ti-cs2-ui .ti-tag {\n    padding: 6px 10px;\n  }\n\n  .ti-cs2-ui .ti-jump-head {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 18px;\n  }\n\n  .ti-cs2-ui .ti-jump-list {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    column-gap: 24px;\n    margin-top: 16px;\n    border-top: 1px solid var(--ti-line);\n  }\n\n  .ti-cs2-ui .ti-jump-link {\n    display: grid;\n    grid-template-columns: 34px minmax(0, 1fr);\n    gap: 10px;\n    align-items: center;\n    padding: 13px 0;\n    border-bottom: 1px solid var(--ti-line);\n    color: var(--ti-accent-deep);\n    font-size: 14.5px;\n    font-weight: 600;\n    line-height: 1.35;\n    text-decoration: none;\n    transition: color 0.2s ease;\n  }\n\n  .ti-cs2-ui .ti-jump-link::before {\n    content: attr(data-step);\n    color: var(--ti-faint);\n    font-size: 11.5px;\n    font-weight: 600;\n    letter-spacing: 0.08em;\n  }\n\n  .ti-cs2-ui .ti-jump-link:hover,\n  .ti-cs2-ui .ti-jump-link[aria-current=\"location\"] {\n    color: var(--ti-accent);\n    text-decoration: underline;\n    text-underline-offset: 3px;\n  }\n\n  .ti-cs2-ui.ti-image-placeholder .ti-card-inner {\n    padding: 22px;\n  }\n\n  .ti-cs2-ui .ti-image-frame {\n    min-height: 220px;\n    display: grid;\n    align-content: center;\n    border: 1px dashed var(--ti-line-3);\n    border-radius: 14px;\n    background: var(--ti-panel);\n    padding: 24px;\n  }\n\n  .ti-cs2-ui .ti-image-frame .ti-title {\n    margin-bottom: 8px;\n  }\n\n  .ti-cs2-ui .ti-image-alt {\n    margin-top: 14px;\n    padding-top: 12px;\n    border-top: 1px solid var(--ti-line);\n    color: var(--ti-faint);\n    font-size: 13px;\n    line-height: 1.5;\n  }\n\n  .ti-cs2-ui.ti-image-placeholder figcaption {\n    margin-top: 12px;\n    color: var(--ti-faint);\n    font-size: 13px;\n    line-height: 1.5;\n  }\n\n  .ti-cs2-ui .ti-note strong {\n    display: block;\n    margin-bottom: 4px;\n    color: var(--ti-ink);\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui .ti-note p {\n    margin: 0;\n    color: var(--ti-muted);\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  .ti-cs2-ui .ti-note-icon {\n    display: none;\n  }\n\n  .ti-cs2-ui .ti-code-group + .ti-code-group {\n    margin-top: 18px;\n  }\n\n  .ti-cs2-ui .ti-code-caption {\n    margin-bottom: 8px;\n    color: var(--ti-ink);\n    font-size: 13.5px;\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui pre.ti-code-block {\n    margin: 0;\n    white-space: pre;\n  }\n\n  .ti-cs2-ui pre.ti-code-block code {\n    color: inherit;\n    font: inherit;\n  }\n\n  .ti-cs2-ui .ti-picker-grid {\n    margin-top: 4px;\n  }\n\n  .ti-cs2-ui .ti-result .ti-badge {\n    margin-bottom: 12px;\n  }\n\n  .ti-cs2-ui .ti-result h3 {\n    margin: 0 0 6px;\n    color: var(--ti-ink);\n    font-size: 18px;\n    font-weight: 600;\n  }\n\n  .ti-cs2-ui .ti-result p {\n    margin: 0;\n    color: var(--ti-muted);\n    line-height: 1.6;\n  }\n\n  .ti-cs2-ui .ti-result .ti-note {\n    margin-top: 14px;\n  }\n\n  @media (max-width: 760px) {\n    .ti-cs2-ui .ti-jump-head {\n      display: block;\n    }\n\n    .ti-cs2-ui .ti-jump-head .ti-badge {\n      margin-top: 10px;\n    }\n\n    .ti-cs2-ui .ti-jump-list {\n      grid-template-columns: 1fr;\n    }\n\n    .ti-cs2-ui .ti-image-frame {\n      min-height: 180px;\n      padding: 20px;\n    }\n  }\n\n<\/style>\n\n\n\n<!-- IMAGE PLACEHOLDER: HERO\nAlt: CS2 Private Matchmaking pool with join code in 2026\nAsset direction: Capture Play > Matchmaking > Private Matchmaking in the current 2026 client. Show Create a Private Matchmaking Pool, Share Code, and a real long hyphenated code. Do not stage a six-digit code.\n-->\n\n\n\n<p>To make a private match in CS2 on Valve servers, open <strong>Play \u2192 Matchmaking \u2192 Private Matchmaking<\/strong>, select <strong>Create a Private Matchmaking Pool<\/strong>, and share the full hyphenated queue code with nine other players. Each solo player, or each party leader, joins the same pool and presses <strong>GO<\/strong>. When at least 10 eligible players are searching, everyone in the selected match accepts and CS2 creates an unrated 10-player Premier match with the normal map veto.<\/p>\n\n\n\n<p>The important distinction is that <strong>Private Matchmaking is not a configurable custom server<\/strong>. The host cannot use it to pick any map, add bots, change round settings, or start with fewer than 10 humans. For a small practice group, workshop map, or bot session, use Practice\/Workshop instead. For recurring scrims and full server control, run a dedicated CS2 server.<\/p>\n\n\n\n<section aria-label=\"Quick answer: the three ways to host a private CS2 match\" class=\"ti-cs2-ui ti-card ti-private-answer\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">The quick answer<\/div>\n<div class=\"ti-title\">Pick the setup that matches what you are actually trying to host<\/div>\n<div class=\"ti-grid ti-grid-3 ti-private-answer-grid\">\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-blue\">10 players<\/span>\n<strong>One 10-player match, normal Premier rules, Valve server<\/strong>\n<p>Use <b>Private Matchmaking<\/b> and share the pool code.<\/p>\n<\/div>\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-green\">Fewer than 10<\/span>\n<strong>Fewer players, bots, workshop maps, or console rules<\/strong>\n<p>Use a <b>Practice or Workshop lobby<\/b> hosted by the party leader.<\/p>\n<\/div>\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-orange\">Reusable host<\/span>\n<strong>Persistent scrim server, password, admins, or repeatable configs<\/strong>\n<p>Use a <b>dedicated server<\/b> on your own machine or a VPS.<\/p>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<nav aria-label=\"Article sections\" class=\"ti-cs2-ui ti-card ti-jump-nav\" data-ti-private-jump=\"\"><div class=\"ti-card-inner\">\n<div class=\"ti-jump-head\">\n<div>\n<div class=\"ti-eyebrow\">Choose your path<\/div>\n<div class=\"ti-title\">Jump to the private-match setup you need<\/div>\n<div class=\"ti-copy-text\">Start with Valve\u2019s pool flow, then switch to Practice, bots, or a dedicated server only when you need more control.<\/div>\n<\/div>\n<\/div>\n<div class=\"ti-jump-list\">\n<a class=\"ti-jump-link\" data-step=\"01\" href=\"#what-is-private-matchmaking-in-cs2\">What it is<\/a>\n<a class=\"ti-jump-link\" data-step=\"02\" href=\"#how-to-create-a-private-match-step-by-step\">Create a pool<\/a>\n<a class=\"ti-jump-link\" data-step=\"03\" href=\"#how-to-invite-friends-and-non-friends\">Invite players<\/a>\n<a class=\"ti-jump-link\" data-step=\"04\" href=\"#customize-rules-maps-and-game-modes\">Maps and rules<\/a>\n<a class=\"ti-jump-link\" data-step=\"05\" href=\"#setting-up-practice-matches-with-bots\">Practice with bots<\/a>\n<a class=\"ti-jump-link\" data-step=\"06\" href=\"#advanced-run-a-dedicated-cs2-server\">Dedicated server<\/a>\n<a class=\"ti-jump-link\" data-step=\"07\" href=\"#troubleshooting-common-issues\">Troubleshooting<\/a>\n<a class=\"ti-jump-link\" data-step=\"08\" href=\"#faq\">FAQ<\/a>\n<\/div>\n<\/div><\/nav>\n\n\n\n<h2 id='what-is-private-matchmaking-in-cs2'  id=\"boomdevs_1\" id=\"what-is-private-matchmaking-in-cs2\" class=\"wp-block-heading ti-cs2-anchor\">What Is Private Matchmaking in CS2?<\/h2>\n\n\n\n<p><strong>Private Matchmaking<\/strong> is Valve\u2019s built-in way to place a closed group into its own Premier-style match on an official Valve server. Valve originally introduced the feature as a \u201cPrivate Queue.\u201d In the current CS2 menu, you create a matchmaking pool, share its code, and let the matchmaker allocate the server once enough players are searching inside that pool.<\/p>\n\n\n\n<p>\u201cPrivate\u201d describes <strong>who can enter the queue<\/strong>; it does not make the pool owner a server administrator. The match still uses the current Premier ruleset and map-veto flow. It does not affect CS Rating or Competitive rank, and it does not award XP or mission progress. For the differences between the ranked queues that this mode imitates, see <a href=\"\/blog\/premier-vs-competitive-in-cs2\/\">Premier vs Competitive in CS2<\/a>.<\/p>\n\n\n\n<p>You can access the pool in three ways: create your own player pool, join a Steam Group\u2019s pool, or manually enter a code someone shared. A Steam Group pool is useful for a league, club, or regular ten-man group because only group members can use that group\u2019s code.<\/p>\n\n\n\n<section aria-label=\"Comparison of CS2 private match methods\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Method comparison<\/div>\n<h3 id='private-matchmaking-vs-practice-vs-a-dedicated-server'  id=\"boomdevs_2\" class=\"ti-title\">Private Matchmaking vs Practice vs a dedicated server<\/h3>\n<p class=\"ti-copy-text\">These three routes are often called a \u201cprivate match,\u201d but they solve different problems.<\/p>\n<div class=\"ti-table-wrap\" style=\"margin-top:18px;\">\n<div class=\"table-wrapper\"><table class=\"ti-table\">\n<thead>\n<tr>\n<th scope=\"col\">Method<\/th>\n<th scope=\"col\">Players<\/th>\n<th scope=\"col\">Where it runs<\/th>\n<th scope=\"col\">Maps and rules<\/th>\n<th scope=\"col\">Bots<\/th>\n<th scope=\"col\">Best for<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Valve Private Matchmaking<\/strong><br\/><span class=\"ti-badge ti-badge-blue\">Official pool<\/span><\/td>\n<td>10 active humans<br\/>5v5<\/td>\n<td>Valve server<\/td>\n<td><span class=\"ti-badge ti-badge-red\">Fixed<\/span><br\/>Current Premier rules and veto<\/td>\n<td><span class=\"ti-badge ti-badge-red\">No<\/span><\/td>\n<td>Ten-mans, team-vs-team games, closed Premier practice<\/td>\n<\/tr>\n<tr>\n<td><strong>Practice \/ Workshop lobby<\/strong><br\/><span class=\"ti-badge ti-badge-green\">Fast custom setup<\/span><\/td>\n<td>Small groups; capacity depends on mode\/map<\/td>\n<td>Party leader\u2019s listen server<\/td>\n<td><span class=\"ti-badge ti-badge-green\">Customizable<\/span><br\/>Official or Workshop map plus console rules<\/td>\n<td><span class=\"ti-badge ti-badge-green\">Yes<\/span><\/td>\n<td>Utility practice, aim maps, friends plus bots, quick experiments<\/td>\n<\/tr>\n<tr>\n<td><strong>Dedicated CS2 server<\/strong><br\/><span class=\"ti-badge ti-badge-orange\">Maximum control<\/span><\/td>\n<td>Configured by the operator<\/td>\n<td>Separate PC, VPS, or rented host<\/td>\n<td><span class=\"ti-badge ti-badge-green\">Fully configurable<\/span><br\/>Maps, cvars, passwords, admins, plugins<\/td>\n<td><span class=\"ti-badge ti-badge-green\">Yes<\/span><\/td>\n<td>Recurring scrims, leagues, stable custom servers, remote hosting<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<p class=\"ti-note\">None of these private routes is a reliable source of Valve matchmaking XP, weekly reward progress, or rank movement.<\/p>\n<\/div><\/section>\n\n\n\n<section class=\"ti-cs2-ui ti-card\" data-ti-private-picker aria-labelledby=\"ti-private-picker-title\">\n  <div class=\"ti-card-inner\">\n    <div class=\"ti-eyebrow\">Setup picker<\/div>\n    <h3 id='which-private-match-method-should-you-use'  id=\"boomdevs_3\" class=\"ti-title\" id=\"ti-private-picker-title\">Which private-match method should you use?<\/h3>\n    <p class=\"ti-copy-text\">Enter your group size and requirements. The result updates instantly; the comparison table above remains the fallback when JavaScript is disabled.<\/p>\n\n    <form class=\"ti-grid ti-grid-2 ti-picker-grid\" aria-label=\"Private match requirements\" data-ti-private-picker-form>\n      <div class=\"ti-control\">\n        <label for=\"ti-private-player-count\">How many human players are ready?<\/label>\n        <input id=\"ti-private-player-count\" type=\"number\" min=\"1\" max=\"32\" step=\"1\" value=\"10\" inputmode=\"numeric\" data-ti-private-player-count>\n      <\/div>\n\n      <div class=\"ti-control\">\n        <label for=\"ti-private-custom\">Do you need custom maps, rules, or bots?<\/label>\n        <select id=\"ti-private-custom\" data-ti-private-custom>\n          <option value=\"no\">No<\/option>\n          <option value=\"yes\">Yes<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"ti-control\">\n        <label for=\"ti-private-valve\">Must the match run on a Valve server?<\/label>\n        <select id=\"ti-private-valve\" data-ti-private-valve>\n          <option value=\"yes\">Yes<\/option>\n          <option value=\"no\">No<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"ti-control\">\n        <label for=\"ti-private-recurring\">Do you need a reusable server for regular scrims?<\/label>\n        <select id=\"ti-private-recurring\" data-ti-private-recurring>\n          <option value=\"no\">No<\/option>\n          <option value=\"yes\">Yes<\/option>\n        <\/select>\n      <\/div>\n    <\/form>\n\n    <div class=\"ti-result\" data-ti-private-result aria-live=\"polite\" aria-atomic=\"true\">\n      <span class=\"ti-badge ti-badge-green\" data-ti-private-result-badge>Best fit<\/span>\n      <h3 id='valve-private-matchmaking'  id=\"boomdevs_4\" data-ti-private-result-title>Valve Private Matchmaking<\/h3>\n      <p data-ti-private-result-body>You have the 10 humans needed for one match and do not need custom controls. Create one private pool, preserve any pre-made parties, and queue on a Valve server.<\/p>\n      <div class=\"ti-note\" data-ti-private-ready-label>10 of 10 players ready. Players per Valve match: 10.<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<h2 id='how-to-create-a-private-match-step-by-step'  id=\"boomdevs_5\" id=\"how-to-create-a-private-match-step-by-step\" class=\"wp-block-heading ti-cs2-anchor\">How to Create a Private Match: Step-by-Step<\/h2>\n\n\n\n<p>Use this flow when you have 10 human players and want an unrated Premier match on Valve infrastructure. If you want fixed teams, organize those teams before anyone starts searching.<\/p>\n\n\n\n<section aria-label=\"Step-by-step instructions for creating a CS2 private matchmaking pool\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Valve pool setup<\/div>\n<h3 id='create-and-start-the-match-in-six-steps'  id=\"boomdevs_6\" class=\"ti-title\">Create and start the match in six steps<\/h3>\n<ol class=\"ti-steps\" style=\"margin-top:18px;\">\n<li>\n<div>\n<strong>Build your parties before queueing<\/strong>\n<p>For a fixed team-vs-team match, make two separate five-player CS2 parties. If everyone joins the pool solo, the matchmaker can decide the teams.<\/p>\n<\/div>\n<\/li>\n<li>\n<div>\n<strong>Open the Private Matchmaking tab<\/strong>\n<p>From the main menu, go to <b>Play \u2192 Matchmaking \u2192 Private Matchmaking<\/b>. Do not use the Practice tab for this Valve-server flow.<\/p>\n<\/div>\n<\/li>\n<li>\n<div>\n<strong>Create a Private Matchmaking Pool<\/strong>\n<p>Select the pool-creation option. CS2 displays the pool attached to your account and exposes its Share Code.<\/p>\n<\/div>\n<\/li>\n<li>\n<div>\n<strong>Copy the full matchmaking code<\/strong>\n<p>Use <b>Share Code<\/b> and copy every hyphenated group. This is a long matchmaking code, not a six-digit PIN.<\/p>\n<\/div>\n<\/li>\n<li>\n<div>\n<strong>Join the same pool and press GO<\/strong>\n<p>Each solo player enters the code under <b>Manually Enter a Code<\/b>. For a pre-made party, the party leader joins the pool and queues the party. All participating parties and solo players must search inside the same pool.<\/p>\n<\/div>\n<\/li>\n<li>\n<div>\n<strong>Accept, complete the veto, and play<\/strong>\n<p>Once at least 10 eligible players are searching, CS2 can allocate a Valve server and show the normal accept prompt. After the selected 10 accept, the match proceeds through the Premier-style map veto. If more than 10 people search, extras may wait for another match, so queue only the intended ten when everyone must stay together.<\/p>\n<\/div>\n<\/li>\n<\/ol>\n<div class=\"ti-note\" style=\"margin-top:16px;\">\n<span class=\"ti-note-icon\">i<\/span>\n<div>\n<strong>The pool is not the same as one 10-person party<\/strong>\n<p>CS2 parties still top out at five players. A ten-man normally enters as two five-stacks, several smaller parties, solo players, or a mix, all using the same pool code.<\/p>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<!-- IMAGE PLACEHOLDER: STEP FLOW\nAlt: How to create a CS2 private matchmaking pool step by step\nAsset direction: Annotate the current client with 1 = Play, 2 = Matchmaking > Private Matchmaking, 3 = Create a Private Matchmaking Pool \/ Share Code. Do not show map or rule controls on this screen.\n-->\n<figure class=\"ti-production-image\" style=\"margin:32px 0;\"><img loading=\"lazy\" src=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/inline-01-how-to-create-a-cs2-private-matchmaking-pool-step-by-step.png\" alt=\"How to create a CS2 private matchmaking pool step by step\" width=\"1200\" height=\"675\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 16px 40px rgba(31,33,48,.14);\" \/><\/figure>\n\n\n\n<h2 id='how-to-invite-friends-and-non-friends-to-your-lobby'  id=\"boomdevs_7\" id=\"how-to-invite-friends-and-non-friends\" class=\"wp-block-heading ti-cs2-anchor\">How to Invite Friends (and Non-Friends) to Your Lobby<\/h2>\n\n\n\n<p>There are two separate invitation layers: a normal CS2\/Steam party keeps teammates together, while the Private Matchmaking code puts multiple parties and solo players into the same closed queue. Use both when you want two known five-player teams to face each other.<\/p>\n\n\n\n<section aria-label=\"Ways to invite players to a CS2 private match\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Invite flow<\/div>\n<h3 id='choose-the-right-invitation-method'  id=\"boomdevs_8\" class=\"ti-title\">Choose the right invitation method<\/h3>\n<div class=\"ti-grid ti-grid-3\" style=\"margin-top:18px;\">\n<div class=\"ti-mini-card\">\n<span aria-hidden=\"true\" class=\"ti-private-icon\">1\u20135<\/span>\n<h3 id='steam-friends-form-a-party-first'  id=\"boomdevs_9\">Steam friends: form a party first<\/h3>\n<p>Invite teammates from the CS2 lobby or Steam overlay. A pre-made party that joins the pool together stays together, which is the cleanest way to preserve two fixed five-stacks.<\/p>\n<div class=\"ti-tag-row\">\n<span class=\"ti-badge ti-badge-blue ti-tag\">Shift + Tab<\/span>\n<span class=\"ti-badge ti-badge-blue ti-tag\">Invite to Lobby<\/span>\n<\/div>\n<\/div>\n<div class=\"ti-mini-card\">\n<span aria-hidden=\"true\" class=\"ti-private-icon\">#<\/span>\n<h3 id='non-friends-share-the-pool-code'  id=\"boomdevs_10\">Non-friends: share the pool code<\/h3>\n<p>No Steam friend request is required. Send the complete code through Discord, team chat, or another private channel. They select <b>Manually Enter a Code<\/b>, paste it, and join the queue.<\/p>\n<div class=\"ti-tag-row\">\n<span class=\"ti-badge ti-badge-blue ti-tag\">Full code<\/span>\n<span class=\"ti-badge ti-badge-blue ti-tag\">No friend add<\/span>\n<\/div>\n<\/div>\n<div class=\"ti-mini-card\">\n<span aria-hidden=\"true\" class=\"ti-private-icon\">G<\/span>\n<h3 id='regular-group-use-a-steam-group-pool'  id=\"boomdevs_11\">Regular group: use a Steam Group pool<\/h3>\n<p>Every Steam Group can have its own private queue code. This is useful for a club or recurring ten-man because group membership controls who can access that pool.<\/p>\n<div class=\"ti-tag-row\">\n<span class=\"ti-badge ti-badge-blue ti-tag\">Members only<\/span>\n<span class=\"ti-badge ti-badge-blue ti-tag\">Reusable group<\/span>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"ti-note\" style=\"margin-top:16px;\">\n<span class=\"ti-note-icon\">!<\/span>\n<div>\n<strong>The code is the access control<\/strong>\n<p>The current built-in flow does not expose a second password field. Share the code only with the intended group, and create a new pool if the code reaches people you did not invite. Use the in-game code instead of relying on browser join URLs mentioned in older guides.<\/p>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<!-- IMAGE PLACEHOLDER: INVITES\nAlt: Inviting friends to a CS2 private match via Steam overlay and pool code\nAsset direction: Split capture. Left: Shift+Tab Steam overlay with Invite to Lobby highlighted. Right: current CS2 Private Matchmaking screen with Share Code and the full hyphenated code. Do not show a six-digit code or browser URL.\n-->\n<figure class=\"ti-production-image\" style=\"margin:32px 0;\"><img loading=\"lazy\" src=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/inline-02-inviting-friends-to-a-cs2-private-match-via-steam-overlay-and-pool-code.png\" alt=\"Inviting friends to a CS2 private match via Steam overlay and pool code\" width=\"1200\" height=\"675\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 16px 40px rgba(31,33,48,.14);\" \/><\/figure>\n\n\n\n<h2 id='customize-rules-maps-and-game-modes'  id=\"boomdevs_12\" id=\"customize-rules-maps-and-game-modes\" class=\"wp-block-heading ti-cs2-anchor\">Customize Rules, Maps, and Game Modes<\/h2>\n\n\n\n<p>You <strong>cannot customize the built-in Private Matchmaking pool<\/strong>. It creates an unrated Premier match using the current Premier map pool, veto, team size, and rules. If your plan includes a specific map, custom round time, weapon restriction, Workshop map, different team size, or bots, choose Practice\/Workshop or a dedicated server before inviting everyone.<\/p>\n\n\n\n<section aria-label=\"Where CS2 private match customization is available\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Customization map<\/div>\n<h3 id='where-each-setting-actually-belongs'  id=\"boomdevs_13\" class=\"ti-title\">Where each setting actually belongs<\/h3>\n<div class=\"ti-grid ti-grid-3\" style=\"margin-top:18px;\">\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-red\">Not customizable<\/span>\n<h3 id='valve-private-matchmaking-1'  id=\"boomdevs_14\" style=\"margin-top:12px;\">Valve Private Matchmaking<\/h3>\n<p>Use it only when the group accepts Premier rules, a map veto, 5v5 teams, and no bots. There is no host-side rules panel inside this queue.<\/p>\n<\/div>\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-green\">Quick customization<\/span>\n<h3 id='practice-or-workshop'  id=\"boomdevs_15\" style=\"margin-top:12px;\">Practice or Workshop<\/h3>\n<p>Invite the group, choose <b>Play \u2192 Practice<\/b> or <b>Workshop Maps<\/b>, select the map and mode, then let the party leader start the listen server.<\/p>\n<\/div>\n<div class=\"ti-mini-card\">\n<span class=\"ti-badge ti-badge-orange\">Full customization<\/span>\n<h3 id='dedicated-server'  id=\"boomdevs_16\" style=\"margin-top:12px;\">Dedicated server<\/h3>\n<p>Use server configs for repeatable rules, passwords, admins, map rotation, remote hosting, and any approved server-side extensions.<\/p>\n<\/div>\n<\/div>\n<div class=\"ti-table-wrap\" style=\"margin-top:18px;\">\n<div class=\"table-wrapper\"><table class=\"ti-table\">\n<thead>\n<tr>\n<th scope=\"col\">Goal<\/th>\n<th scope=\"col\">Recommended route<\/th>\n<th scope=\"col\">Practical control<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Choose one official map<\/strong><\/td>\n<td>Practice<\/td>\n<td>Select the mode and map before the host starts.<\/td>\n<\/tr>\n<tr>\n<td><strong>Play a Workshop map<\/strong><\/td>\n<td>Workshop lobby<\/td>\n<td>Subscribe, invite the party, choose the map, and start; clients can download the map when joining.<\/td>\n<\/tr>\n<tr>\n<td><strong>Change money, buy time, freeze time, or round time<\/strong><\/td>\n<td>Practice\/Workshop console or server.cfg<\/td>\n<td>The listen-server host or dedicated-server admin runs the relevant cvars.<\/td>\n<\/tr>\n<tr>\n<td><strong>Run recurring team scrims<\/strong><\/td>\n<td>Dedicated server<\/td>\n<td>Save one tested config and load it for every session.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<p>A simple Practice config might set <code>mp_freezetime 5<\/code>, <code>mp_roundtime_defuse 2<\/code>, <code>mp_startmoney 16000<\/code>, <code>mp_buy_anywhere 1<\/code>, and then apply the changes with <code>mp_restartgame 1<\/code>. The exact cvars should match the map and mode you selected. Browse <a href=\"\/blog\/all-game-modes-in-cs2\/\">all CS2 game modes<\/a> before building a custom ruleset around the wrong base mode.<\/p>\n\n\n\n<p>For a duel-specific setup, use Tradeit\u2019s separate guide on <a href=\"\/blog\/1v1-in-cs2\/\">how to play 1v1 in CS2<\/a>. That sibling article covers the 1v1 maps, commands, and community-server intent without turning this ten-man guide into a duplicate.<\/p>\n\n\n\n<!-- IMAGE PLACEHOLDER: CUSTOMIZATION\nAlt: CS2 private match rule customization panel\nAccuracy direction: Use a truthful composite of the Practice\/Workshop map selector and the host console or a real server-admin panel. Do not depict these controls inside Valve Private Matchmaking. If no genuine toggle panel exists in the current client, show the console values for round time, freeze time, and a server-side weapon rule instead.\n-->\n<figure class=\"ti-production-image\" style=\"margin:32px 0;\"><img loading=\"lazy\" src=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/inline-03-cs2-private-match-rule-customization-panel.png\" alt=\"CS2 private match rule customization panel\" width=\"1200\" height=\"675\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 16px 40px rgba(31,33,48,.14);\" \/><\/figure>\n\n\n\n<section aria-labelledby=\"ti-private-cta-store-title\" class=\"ti-cs2-ui ti-cta\">\n<div>\n<h3 id='running-private-scrims-with-your-team'  id=\"boomdevs_17\" id=\"ti-private-cta-store-title\">Running private scrims with your team?<\/h3>\n<p>Kit your squad out with matching skins &#8211; browse CS2 rifles, knives, and gloves on Tradeit.<\/p>\n<\/div>\n<a class=\"ti-button\" href=\"https:\/\/tradeit.gg\/csgo\/store\">Buy CS2 Skins<\/a>\n<\/section>\n\n\n\n<h2 id='setting-up-practice-matches-with-bots'  id=\"boomdevs_18\" id=\"setting-up-practice-matches-with-bots\" class=\"wp-block-heading ti-cs2-anchor\">Setting Up Practice Matches with Bots<\/h2>\n\n\n\n<p>Bots do not fill empty slots in Valve Private Matchmaking. To practice with bots, or combine a few friends with AI players, start a Practice or Workshop lobby instead. The party leader hosts the session and controls the bots through the developer console.<\/p>\n\n\n\n<h3 id='1-enable-the-developer-console'  id=\"boomdevs_19\" id=\"enable-the-developer-console\" class=\"wp-block-heading\">1. Enable the developer console<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>Open <strong>Settings \u2192 Game<\/strong>.<\/li><li>Set <strong>Enable Developer Console (~)<\/strong> to <strong>Yes<\/strong>.<\/li><li>Invite any friends to the CS2 party before starting.<\/li><li>Open <strong>Play \u2192 Practice<\/strong> or <strong>Workshop Maps<\/strong>, choose the map, and press <strong>GO<\/strong>.<\/li><li>After the map loads, the host presses <strong>~<\/strong> and runs the commands below.<\/li><\/ol>\n\n\n\n<h3 id='2-add-and-configure-the-bots'  id=\"boomdevs_20\" id=\"add-and-configure-practice-bots\" class=\"wp-block-heading\">2. Add and configure the bots<\/h3>\n\n\n\n<section aria-label=\"Copyable CS2 bot practice commands\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Bot practice preset<\/div>\n<h3 id='clean-sample-setup-two-bots-per-side'  id=\"boomdevs_21\" class=\"ti-title\">Clean sample setup: two bots per side<\/h3>\n<p class=\"ti-copy-text\">Run this as the listen-server host. Repeat <code>bot_add_t<\/code> or <code>bot_add_ct<\/code> until you have the team sizes you want.<\/p>\n<div class=\"ti-code-group\" style=\"margin-top:18px;\"><div class=\"ti-code-caption\">CS2 console<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-bot-preset\">mp_autoteambalance 0\nmp_limitteams 0\nbot_kick\nbot_difficulty 3\nsv_auto_adjust_bot_difficulty 0\nbot_add_t\nbot_add_t\nbot_add_ct\nbot_add_ct\nmp_restartgame 1<\/pre><button aria-label=\"Copy bot practice commands\" class=\"ti-copy\" data-copy-target=\"#ti-private-bot-preset\" type=\"button\">Copy<\/button><\/div><\/div>\n<p class=\"ti-note\"><code>bot_difficulty 3<\/code> is the expert setting documented by the in-game command help. Turning off automatic adjustment keeps CS2 from changing that level between rounds.<\/p>\n<div class=\"ti-note\" style=\"margin-top:16px;\">\n<span class=\"ti-note-icon\">i<\/span>\n<div>\n<strong>Prefer automatic filling?<\/strong>\n<p>Use <code>bot_quota_mode fill<\/code> and then <code>bot_quota 10<\/code> to have CS2 fill toward a target player count. Manual <code>bot_add_t<\/code>\/<code>bot_add_ct<\/code> commands are more predictable when exact teams matter.<\/p>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<section aria-label=\"CS2 bot command reference\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Command reference<\/div>\n<h3 id='useful-bot-and-team-commands'  id=\"boomdevs_22\" class=\"ti-title\">Useful bot and team commands<\/h3>\n<div class=\"ti-table-wrap\" style=\"margin-top:18px;\">\n<div class=\"table-wrapper\"><table class=\"ti-table\">\n<thead>\n<tr>\n<th scope=\"col\">Command<\/th>\n<th scope=\"col\">What it does<\/th>\n<th scope=\"col\">Practical note<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr><td><code>bot_add_t<\/code><\/td><td>Adds one Terrorist bot.<\/td><td>Repeat as needed; the bot may spawn on the next round.<\/td><\/tr>\n<tr><td><code>bot_add_ct<\/code><\/td><td>Adds one Counter-Terrorist bot.<\/td><td>Disable team limits first if CS2 rejects the bot.<\/td><\/tr>\n<tr><td><code>bot_kick<\/code><\/td><td>Removes all bots.<\/td><td>Use before rebuilding clean teams.<\/td><\/tr>\n<tr><td><code>bot_difficulty 0\u20133<\/code><\/td><td>Sets Easy, Normal, Hard, or Expert for newly added bots.<\/td><td>Use <code>3<\/code> for Expert, then re-add or restart if the change does not appear immediately.<\/td><\/tr>\n<tr><td><code>sv_auto_adjust_bot_difficulty 0<\/code><\/td><td>Stops round-by-round automatic difficulty changes.<\/td><td>Useful when you want a stable training baseline.<\/td><\/tr>\n<tr><td><code>bot_quota_mode fill<\/code><\/td><td>Fills open slots toward the bot quota target.<\/td><td>Pair with <code>bot_quota N<\/code>.<\/td><\/tr>\n<tr><td><code>mp_autoteambalance 0<\/code><\/td><td>Disables automatic team balancing.<\/td><td>Needed for uneven drills such as one player versus several bots.<\/td><\/tr>\n<tr><td><code>mp_limitteams 0<\/code><\/td><td>Removes the normal team-size difference limit.<\/td><td>Prevents CS2 from blocking an uneven setup.<\/td><\/tr>\n<tr><td><code>mp_restartgame 1<\/code><\/td><td>Restarts the game after one second.<\/td><td>Applies a clean round with the new settings.<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<p>For a friends-plus-bots session, every human should join the party before the host starts the Practice or Workshop map. Workshop clients can download the selected map when they join. If a guest is repeatedly dropped, everyone should update CS2, confirm the same Workshop item, restart the party, and try again. A dedicated server is the more reliable fallback for a regular group; a third-party virtual-LAN tool is not required for the normal CS2 flow.<\/p>\n\n\n\n<!-- IMAGE PLACEHOLDER: BOTS\nAlt: CS2 console commands for adding practice bots to a private match\nAsset direction: Current CS2 developer-console screenshot with bot_add_t, bot_add_ct, and bot_difficulty 3 visible. Include mp_autoteambalance 0 and mp_limitteams 0 if space permits. Capture inside Practice\/Workshop, not Valve Private Matchmaking.\n-->\n<figure class=\"ti-production-image\" style=\"margin:32px 0;\"><img loading=\"lazy\" src=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/inline-04-cs2-console-commands-for-adding-practice-bots-to-a-private-match.png\" alt=\"CS2 console commands for adding practice bots to a private match\" width=\"1200\" height=\"675\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 16px 40px rgba(31,33,48,.14);\" \/><\/figure>\n\n\n\n<h2 id='advanced-run-a-dedicated-cs2-server'  id=\"boomdevs_23\" id=\"advanced-run-a-dedicated-cs2-server\" class=\"wp-block-heading ti-cs2-anchor\">Advanced: Run a Dedicated CS2 Server<\/h2>\n\n\n\n<p>A dedicated server is the right choice when you need a reusable password, fixed map rotation, remote hosting, admin access, saved configs, custom team sizes, or a stable endpoint that does not depend on the party leader\u2019s gaming PC. This section gives a current quick-start; the full walkthrough is in Tradeit\u2019s guide on <a href=\"\/blog\/how-to-host-a-dedicated-cs2-server\/\">how to host a dedicated CS2 server<\/a>.<\/p>\n\n\n\n<section aria-label=\"Current CS2 dedicated server quick start\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Current server quick-start<\/div>\n<h3 id='steamcmd-server-cfg-and-the-current-cs2-binary'  id=\"boomdevs_24\" class=\"ti-title\">SteamCMD, server.cfg, and the current CS2 binary<\/h3>\n<p class=\"ti-copy-text\">Stop the server before updating it. Replace the example paths, hostname, passwords, map, and token with your own values.<\/p>\n<div class=\"ti-code-group\" style=\"margin-top:18px;\"><div class=\"ti-code-caption\">Install or update with SteamCMD<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-steamcmd\">steamcmd +force_install_dir \/opt\/cs2-server +login anonymous +app_update 730 validate +quit<\/pre><button aria-label=\"Copy SteamCMD install command\" class=\"ti-copy\" data-copy-target=\"#ti-private-steamcmd\" type=\"button\">Copy<\/button><\/div><\/div>\n<p class=\"ti-note\">CS2 uses App ID <code>730<\/code>. Running the same command later updates and validates the server files after a game patch.<\/p>\n<div class=\"ti-code-group\"><div class=\"ti-code-caption\">game\/csgo\/cfg\/server.cfg<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-server-cfg\">hostname \"Tradeit Private Scrim\"\nsv_lan 0\nsv_password \"CHANGE_ME\"\nrcon_password \"USE_A_DIFFERENT_LONG_PASSWORD\"\nmp_autoteambalance 0\nmp_limitteams 0<\/pre><button aria-label=\"Copy server configuration\" class=\"ti-copy\" data-copy-target=\"#ti-private-server-cfg\" type=\"button\">Copy<\/button><\/div><\/div>\n<p class=\"ti-note\">Keep the server password and RCON password different. Do not publish either value in a screenshot, repository, or article.<\/p>\n<div class=\"ti-grid ti-grid-2\" style=\"margin-top:14px;\">\n<div class=\"ti-code-group\"><div class=\"ti-code-caption\">Linux launch command<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-linux-launch\">cd \/opt\/cs2-server\n.\/game\/bin\/linuxsteamrt64\/cs2 -dedicated -console -usercon -port 27015 +game_type 0 +game_mode 1 +map de_mirage +sv_setsteamaccount YOUR_GSLT<\/pre><button aria-label=\"Copy Linux launch command\" class=\"ti-copy\" data-copy-target=\"#ti-private-linux-launch\" type=\"button\">Copy<\/button><\/div><\/div>\n<div class=\"ti-code-group\"><div class=\"ti-code-caption\">Windows launch command<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-windows-launch\">\"C:\\cs2-server\\game\\bin\\win64\\cs2.exe\" -dedicated -console -usercon -port 27015 +game_type 0 +game_mode 1 +map de_mirage +sv_setsteamaccount YOUR_GSLT<\/pre><button aria-label=\"Copy Windows launch command\" class=\"ti-copy\" data-copy-target=\"#ti-private-windows-launch\" type=\"button\">Copy<\/button><\/div><\/div>\n<\/div>\n<div class=\"ti-note\" style=\"margin-top:16px;\">\n<span class=\"ti-note-icon\">!<\/span>\n<div>\n<strong>Treat the GSLT like a password<\/strong>\n<p>For an Internet-facing server, create a unique Steam Game Server Login Token for App ID 730 and pass it with <code>+sv_setsteamaccount<\/code>. Never share the real token. Revoke and replace it immediately if it leaks.<\/p>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<p>Allow the configured server port through the host firewall and, when self-hosting, the router. In this example, <code>27015<\/code> is the server port; Source server documentation lists it for game traffic, pings, and RCON. Open only the exact TCP\/UDP rules your setup requires instead of exposing a broad port range. Share the server hostname or public IP privately. Players can set the password and connect from the console:<\/p>\n\n\n\n<section aria-label=\"CS2 dedicated server connect commands\" class=\"ti-cs2-ui ti-card\"><div class=\"ti-card-inner\"><div class=\"ti-code-group\"><div class=\"ti-code-caption\">Player console<\/div><div class=\"ti-code-row\"><pre class=\"ti-code-block\" id=\"ti-private-connect\">password \"CHANGE_ME\"\nconnect your.host.name:27015<\/pre><button aria-label=\"Copy server connect commands\" class=\"ti-copy\" data-copy-target=\"#ti-private-connect\" type=\"button\">Copy<\/button><\/div><\/div><\/div><\/section>\n\n\n\n<p>If your home connection uses carrier-grade NAT, ordinary port forwarding may not expose the server at all. In that case, use a VPS or a game-server host with a public address rather than opening an unnecessarily broad port range. Keep the CS2 server build current after every client update or players will see a version mismatch.<\/p>\n\n\n\n<h2 id='troubleshooting-common-issues'  id=\"boomdevs_25\" id=\"troubleshooting-common-issues\" class=\"wp-block-heading ti-cs2-anchor\">Troubleshooting Common Issues<\/h2>\n\n\n\n<p>Most private-match problems come from using the wrong host type, missing the ten-player requirement, or mixing different pool codes. Open the issue that matches what you see.<\/p>\n\n\n\n<section aria-label=\"CS2 private match troubleshooting\" class=\"ti-cs2-ui ti-accordion ti-card\"><div class=\"ti-card-inner\">\n<details>\n<summary>The Private Matchmaking pool never starts<\/summary>\n<div class=\"ti-answer\">\n<p>Confirm that at least 10 eligible human players are actively searching in the same pool. It is not enough to have people sitting in a lobby or displaying the code screen; every solo player or party leader must join the code and press <strong>GO<\/strong>. Bots cannot fill the missing slots.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>CS2 says the matchmaking code is invalid<\/summary>\n<div class=\"ti-answer\">\n<p>Copy the complete hyphenated code again and remove any leading or trailing spaces. Make sure nobody is pasting an old code from a previous pool. If the owner recreated the pool, distribute the new code. Restart and update CS2 if the same current code fails for multiple players.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>The teams are not arranged the way we planned<\/summary>\n<div class=\"ti-answer\">\n<p>Do not send all 10 players into the pool as solo queue users when fixed teams matter. Build two five-player parties first, then have each party leader enter the same pool code and queue. Solo entrants can be sorted by the matchmaker.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>We only have two, four, six, or eight players<\/summary>\n<div class=\"ti-answer\">\n<p>The official Valve pool is a 5v5 format and does not launch an undersized match. Use Practice\/Workshop for a small hosted game, or use a dedicated server when you need a stable custom player count.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>I cannot select a map, add bots, or change round settings<\/summary>\n<div class=\"ti-answer\">\n<p>You are in the correct screen for a Valve private queue but the wrong screen for customization. Private Matchmaking is fixed to Premier-style rules. Return to <strong>Play \u2192 Practice<\/strong> or <strong>Workshop Maps<\/strong>, or connect to a dedicated server where the host has console\/admin control.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>A friend is dropped when the Practice or Workshop map starts<\/summary>\n<div class=\"ti-answer\">\n<ol>\n<li>Make sure everyone is on the current CS2 build.<\/li>\n<li>Re-form the party and let the intended host remain party leader.<\/li>\n<li>For Workshop content, confirm the map is still available and let clients finish downloading it.<\/li>\n<li>Restart Steam\/CS2 and verify game files if the same client repeatedly fails.<\/li>\n<li>Move the session to a dedicated server if the host\u2019s listen server remains unreliable.<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<details>\n<summary>Private Matchmaking is missing or unavailable<\/summary>\n<div class=\"ti-answer\">\n<p>Valve\u2019s public feature documentation does not list Prime as a separate purchase requirement for creating or entering a private pool. Update CS2, restart Steam, verify the game files, and confirm that the account can use Valve matchmaking. If the tab is still missing, review any account or matchmaking restrictions through Steam Support. Prime Status governs Prime-only matchmaking and item rewards, but it should not be treated as a documented \u201cprivate pool unlock.\u201d<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Players cannot reach the dedicated server<\/summary>\n<div class=\"ti-answer\">\n<ul>\n<li>Update the server with App ID 730 so its build matches the clients.<\/li>\n<li>Check the launch log for Steam login\/GSLT errors.<\/li>\n<li>Allow the chosen port through the OS firewall and router.<\/li>\n<li>Confirm <code>sv_lan 0<\/code> for an Internet server and share the public address, not a private LAN address.<\/li>\n<li>Check for carrier-grade NAT; rent a public host if inbound forwarding is unavailable.<\/li>\n<li>Verify that the server password was set before the player ran <code>connect<\/code>.<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<\/div><\/section>\n\n\n\n<p>The simplest rule is: use Private Matchmaking only for a closed, unrated ten-player Premier game. The moment you need fewer humans, bots, a specific map, altered rules, a password, or reusable administration, move to Practice\/Workshop or a dedicated server instead of trying to force those features into the pool.<\/p>\n\n\n\n<section aria-labelledby=\"ti-private-cta-trade-title\" class=\"ti-cs2-ui ti-cta\">\n<div>\n<h3 id='ready-to-trade-cs2-skins'  id=\"boomdevs_26\" id=\"ti-private-cta-trade-title\">Ready to trade CS2 skins?<\/h3>\n<p>Trade, buy, or sell CS2 skins instantly on Tradeit &#8211; no Steam Wallet lock-in.<\/p>\n<\/div>\n<a class=\"ti-button\" href=\"https:\/\/tradeit.gg\/csgo\/trade\">Trade CS2 Skins on Tradeit<\/a>\n<\/section>\n\n\n\n<h2 id='faq'  id=\"boomdevs_27\" id=\"faq\" class=\"wp-block-heading ti-cs2-anchor\">FAQ<\/h2>\n\n\n\n<section aria-label=\"Frequently asked questions about CS2 private matchmaking\" class=\"ti-cs2-ui ti-card ti-accordion\"><div class=\"ti-card-inner\">\n<div class=\"ti-eyebrow\">Frequently asked questions<\/div>\n<h3 id='cs2-private-pools-codes-prime-progression-and-bots'  id=\"boomdevs_28\" class=\"ti-title\">CS2 private pools, codes, Prime, progression, and bots<\/h3>\n<p class=\"ti-copy-text\" style=\"margin-bottom:18px;\">These answers refer to the built-in Valve Private Matchmaking feature unless stated otherwise.<\/p>\n<details>\n<summary>How does private matchmaking work in CS2?<\/summary>\n<div class=\"ti-answer\">\n<p>One player creates a Private Matchmaking pool and shares its code. Solo players and party leaders join that same pool and press GO. Once at least 10 eligible humans are searching, Valve can form a 10-player match, everyone selected accepts, and the group plays an unrated Premier-style 5v5 with a map veto.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Do I need Prime to unlock private matchmaking in CS2?<\/summary>\n<div class=\"ti-answer\">\n<p>Valve\u2019s public feature documentation does not list Prime as a separate purchase requirement for generating or entering a private pool. Every account still needs to be eligible to use Valve matchmaking. Prime Status governs Prime-only matchmaking and item rewards, but it is a separate system; do not assume buying Prime is the documented fix for a missing or disabled pool tab.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Can I host a private match without adding the other player as a friend?<\/summary>\n<div class=\"ti-answer\">\n<p>Yes. Send them the full Private Matchmaking code through a private channel. They can open <strong>Play \u2192 Matchmaking \u2192 Private Matchmaking \u2192 Manually Enter a Code<\/strong> and join without a Steam friend request. A friend invite is only needed when you want to form a pre-made party first.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Do private matches count for XP, drops, or rank progress?<\/summary>\n<div class=\"ti-answer\">\n<p>No. Valve Private Matchmaking does not award XP or mission progress and does not change CS Rating or Competitive rank. Because it does not generate normal XP progress, it is not a route to the Weekly Care Package or other matchmaking progression.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>What is the maximum player cap for a CS2 private match?<\/summary>\n<div class=\"ti-answer\">\n<p>A launched Valve Private Matchmaking game has 10 active players: five per team. A pool can organize a wider group, but one match is still 5v5. Practice maps and dedicated servers can use different capacities depending on the selected mode, map, and server configuration.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>How do I share a private match lobby using a code?<\/summary>\n<div class=\"ti-answer\">\n<p>Select <strong>Share Code<\/strong> on the Private Matchmaking screen and copy the entire long, hyphenated code. Send it through Discord, Steam chat, or another private channel. Each solo player or party leader pastes it under <strong>Manually Enter a Code<\/strong>. Use this current code flow rather than old guides that describe a six-digit PIN or browser join URL.<\/p>\n<\/div>\n<\/details>\n<details>\n<summary>Can I run a private match with bots filling empty slots?<\/summary>\n<div class=\"ti-answer\">\n<p>Not in Valve Private Matchmaking; it still requires 10 human players. To play with friends and bots, launch a Practice or Workshop lobby and use commands such as <code>bot_add_t<\/code>, <code>bot_add_ct<\/code>, and <code>bot_difficulty 3<\/code>. A dedicated server gives you the same bot control with more reliable hosting.<\/p>\n<\/div>\n<\/details>\n<\/div><\/section>\n\n\n\n<script>\n  (function () {\n    function ready(fn) {\n      if (document.readyState !== \"loading\") fn();\n      else document.addEventListener(\"DOMContentLoaded\", fn);\n    }\n\n    function copyText(text) {\n      if (navigator.clipboard && window.isSecureContext) {\n        return navigator.clipboard.writeText(text);\n      }\n\n      var textarea = document.createElement(\"textarea\");\n      textarea.value = text;\n      textarea.style.position = \"fixed\";\n      textarea.style.left = \"-9999px\";\n      document.body.appendChild(textarea);\n      textarea.focus();\n      textarea.select();\n\n      return new Promise(function (resolve, reject) {\n        try {\n          document.execCommand(\"copy\");\n          resolve();\n        } catch (error) {\n          reject(error);\n        } finally {\n          document.body.removeChild(textarea);\n        }\n      });\n    }\n\n    function clamp(value, min, max) {\n      return Math.max(min, Math.min(max, value));\n    }\n\n    ready(function () {\n      document.addEventListener(\"click\", function (event) {\n        var button = event.target.closest(\".ti-cs2-ui .ti-copy\");\n        if (!button) return;\n\n        var targetSelector = button.getAttribute(\"data-copy-target\");\n        var target = targetSelector ? document.querySelector(targetSelector) : null;\n        var text = button.getAttribute(\"data-copy\") || (target ? target.textContent.trim() : \"\");\n\n        if (!text) return;\n\n        copyText(text).then(function () {\n          var original = button.getAttribute(\"data-label\") || button.textContent;\n          button.setAttribute(\"data-label\", original);\n          button.textContent = \"Copied\";\n          button.setAttribute(\"aria-label\", \"Copied to clipboard\");\n          setTimeout(function () {\n            button.textContent = original;\n            button.setAttribute(\"aria-label\", original);\n          }, 1400);\n        }).catch(function () {\n          button.textContent = \"Select text\";\n        });\n      });\n\n      document.querySelectorAll(\"[data-ti-private-picker]\").forEach(function (picker) {\n        var playerInput = picker.querySelector(\"[data-ti-private-player-count]\");\n        var customSelect = picker.querySelector(\"[data-ti-private-custom]\");\n        var valveSelect = picker.querySelector(\"[data-ti-private-valve]\");\n        var recurringSelect = picker.querySelector(\"[data-ti-private-recurring]\");\n        var badge = picker.querySelector(\"[data-ti-private-result-badge]\");\n        var title = picker.querySelector(\"[data-ti-private-result-title]\");\n        var body = picker.querySelector(\"[data-ti-private-result-body]\");\n        var readyLabel = picker.querySelector(\"[data-ti-private-ready-label]\");\n        var form = picker.querySelector(\"[data-ti-private-picker-form]\");\n\n        if (!playerInput || !customSelect || !valveSelect || !recurringSelect || !badge || !title || !body || !readyLabel) return;\n        if (form) form.addEventListener(\"submit\", function (event) { event.preventDefault(); });\n\n        function setBadge(text, badgeClass) {\n          badge.textContent = text;\n          badge.className = \"ti-badge \" + badgeClass;\n        }\n\n        function updatePicker() {\n          var players = clamp(parseInt(playerInput.value, 10) || 1, 1, 32);\n          var custom = customSelect.value === \"yes\";\n          var valve = valveSelect.value === \"yes\";\n          var recurring = recurringSelect.value === \"yes\";\n          var resultTitle = \"Practice \/ Workshop lobby\";\n          var resultBody = \"Use the party leader's listen server for a quick custom map, small group, or bot session.\";\n          var badgeText = \"Best fit\";\n          var badgeClass = \"ti-badge-green\";\n\n          playerInput.value = String(players);\n\n          if (valve && (custom || recurring)) {\n            resultTitle = \"No built-in route meets every requirement\";\n            resultBody = custom && recurring\n              ? \"Valve Private Matchmaking cannot provide custom rules or a reusable administered server. Keep official Valve hosting and accept fixed Premier rules, or select No for the Valve-server requirement and run a dedicated server.\"\n              : custom\n                ? \"Valve Private Matchmaking cannot supply custom maps, bots, or cvars. Keep official hosting and accept Premier rules, or select No for the Valve-server requirement and use Practice\/Workshop or a dedicated server.\"\n                : \"A reusable server with persistent passwords, configs, and admins is not hosted through Valve Private Matchmaking. Select No for the Valve-server requirement and run a dedicated server.\";\n            badgeText = \"Requirements conflict\";\n            badgeClass = \"ti-badge-red\";\n          } else if (valve && players >= 10) {\n            resultTitle = \"Valve Private Matchmaking\";\n            resultBody = players === 10\n              ? \"You have the 10 humans needed for one match and do not need custom controls. Create one private pool, preserve any pre-made parties, and queue on a Valve server.\"\n              : \"The pool can include more than 10 people, but each match is still 5v5. Extra players may wait or be placed into another match; use a dedicated server when everyone must share one session.\";\n            badgeText = \"Official Valve route\";\n            badgeClass = \"ti-badge-green\";\n          } else if (valve) {\n            resultTitle = \"Recruit to 10 or change the host type\";\n            resultBody = \"The Valve pool cannot form a match until at least 10 eligible humans are searching. Recruit to 10, or select No for the Valve-server requirement and switch to Practice\/Workshop or a dedicated server.\";\n            badgeText = \"More players needed\";\n            badgeClass = \"ti-badge-orange\";\n          } else if (recurring || (custom && players >= 8)) {\n            resultTitle = \"Dedicated CS2 server\";\n            resultBody = \"Your group needs persistent or heavier custom control. Use a separate server so passwords, configs, admins, ports, and map rotation stay consistent between sessions.\";\n            badgeText = \"Maximum control\";\n            badgeClass = \"ti-badge-blue\";\n          } else if (players < 8) {\n            resultTitle = \"Practice \/ Workshop lobby\";\n            resultBody = \"A host-run lobby is the fastest fit for a small group, bots, an official practice map, or Workshop content. Move to a dedicated server if the listen server is unstable.\";\n            badgeText = \"Fastest setup\";\n            badgeClass = \"ti-badge-green\";\n          } else if (custom) {\n            resultTitle = \"Dedicated CS2 server\";\n            resultBody = \"For a near-full or full custom match, a dedicated server is more reliable than loading a large group onto one player's listen server.\";\n            badgeText = \"Reliable custom host\";\n            badgeClass = \"ti-badge-blue\";\n          } else {\n            resultTitle = \"Practice lobby or dedicated server\";\n            resultBody = \"You do not need Valve hosting and have not requested custom controls. Use Practice for a one-off session or a dedicated server when reliability and repeat use matter.\";\n            badgeText = \"Choose by frequency\";\n            badgeClass = \"ti-badge-orange\";\n          }\n\n          setBadge(badgeText, badgeClass);\n          title.textContent = resultTitle;\n          body.textContent = resultBody;\n\n          if (players < 10) {\n            var remaining = 10 - players;\n            readyLabel.textContent = players + \" of 10 players ready. \" + remaining + \" more \" + (remaining === 1 ? \"player is\" : \"players are\") + \" needed for Valve Private Matchmaking.\";\n          } else if (players === 10) {\n            readyLabel.textContent = \"10 of 10 players ready. Players per Valve match: 10.\";\n          } else {\n            readyLabel.textContent = players + \" players are ready. Valve still forms each match from 10 active players.\";\n          }\n        }\n\n        [playerInput, customSelect, valveSelect, recurringSelect].forEach(function (control) {\n          control.addEventListener(\"input\", updatePicker);\n          control.addEventListener(\"change\", updatePicker);\n        });\n\n        updatePicker();\n      });\n\n      var nav = document.querySelector(\"[data-ti-private-jump]\");\n      if (nav &#038;&#038; \"IntersectionObserver\" in window) {\n        var links = Array.prototype.slice.call(nav.querySelectorAll('a[href^=\"#\"]'));\n        var targets = links.map(function (link) {\n          return document.querySelector(link.getAttribute(\"href\"));\n        }).filter(Boolean);\n\n        var observer = new IntersectionObserver(function (entries) {\n          entries.forEach(function (entry) {\n            if (!entry.isIntersecting) return;\n            links.forEach(function (link) {\n              var active = link.getAttribute(\"href\") === \"#\" + entry.target.id;\n              if (active) link.setAttribute(\"aria-current\", \"location\");\n              else link.removeAttribute(\"aria-current\");\n            });\n          });\n        }, { rootMargin: \"-18% 0px -72% 0px\", threshold: 0 });\n\n        targets.forEach(function (target) { observer.observe(target); });\n      }\n    });\n  })();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>To make a private match in CS2 on Valve servers, open Play \u2192 Matchmaking \u2192 Private Matchmaking, select Create a&#8230;<\/p>\n","protected":false},"author":5,"featured_media":31915,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[399,404],"tags":[],"class_list":["post-11895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cs2","category-cs2-guides"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"William Westerlund\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Tradeit.gg Blog | CS2, CS:GO, Rust &amp; TF2\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to Make a Private Match in CS2 (2026)\" \/>\n\t\t<meta property=\"og:description\" content=\"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-06-14T05:13:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-20T22:49:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/tradeitgg\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tradeit_gg\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How to Make a Private Match in CS2 (2025)\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@https:\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2024\/02\/cropped-logo-1.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"William Westerlund\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#blogposting\",\"name\":\"How to Make a Private Match in CS2 (2026)\",\"headline\":\"How to Make a Private Match in CS2 (2026)\",\"author\":{\"@type\":\"Person\",\"name\":\"William Westerlund\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/author\\\/william\\\/\",\"image\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/William-Westerlund.webp\",\"description\":\"William\\u2019s Tradeit articles cover CS2 skins, Steam trading, marketplace updates, and practical guides for Counter-Strike players.\",\"jobTitle\":\"Lead Editor, Reviewer\",\"knowsAbout\":[\"CS2 skins\",\"Skin trading\",\"Steam guides\"],\"sameAs\":[\"https:\\\/\\\/steamcommunity.com\\\/profiles\\\/76561198032362775\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/william-westerlund-a47b17157\\\/\"]},\"publisher\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/featured-7.png\",\"width\":1920,\"height\":1080},\"datePublished\":\"2025-06-14T05:13:00+00:00\",\"dateModified\":\"2026-07-20T22:49:11+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#webpage\"},\"articleSection\":\"CS2, CS2 Guides\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tradeit.gg\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/#listItem\",\"name\":\"CS2\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/#listItem\",\"position\":2,\"name\":\"CS2\",\"item\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/cs2-guides\\\/#listItem\",\"name\":\"CS2 Guides\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/cs2-guides\\\/#listItem\",\"position\":3,\"name\":\"CS2 Guides\",\"item\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/cs2-guides\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#listItem\",\"name\":\"How to Make a Private Match in CS2 (2026)\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/#listItem\",\"name\":\"CS2\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#listItem\",\"position\":4,\"name\":\"How to Make a Private Match in CS2 (2026)\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/cs2\\\/cs2-guides\\\/#listItem\",\"name\":\"CS2 Guides\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/#organization\",\"name\":\"Tradeit.gg\",\"description\":\"Tradeit.gg is the leading CS2 skin trading platform with instant trades, secure payments, and a 4.7 star Trustpilot rating.\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/\",\"email\":\"Support@tradeit.gg\",\"foundingDate\":\"2017-01-01\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/cropped-logo-2.png\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#organizationLogo\",\"width\":427,\"height\":100,\"caption\":\"Tradeit.gg logo\"},\"image\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/tradeitgg\",\"https:\\\/\\\/x.com\\\/tradeit_gg\",\"https:\\\/\\\/www.instagram.com\\\/tradeit.gg\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCld1sYd4aHddmPsJGa3YjQw\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tradeitgg\\\/\",\"https:\\\/\\\/discord.com\\\/invite\\\/tradeit\",\"https:\\\/\\\/www.reddit.com\\\/user\\\/tradeitofficial\\\/\",\"https:\\\/\\\/steamcommunity.com\\\/groups\\\/tradeitgg\",\"https:\\\/\\\/www.twitch.tv\\\/tradeitofficial\",\"https:\\\/\\\/m.vk.com\\\/tradeitgg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/author\\\/william\\\/#author\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/author\\\/william\\\/\",\"name\":\"William Westerlund\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/98055891c69dd4dde7c4d605b2badde2?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/WWesterlundd\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/william-westerlund-a47b17157\"],\"description\":\"William brings 7 years of experience writing for multiple gaming blogs. He has more than 10,000 hours played in CS:GO (CS2) and have played around in other games such as TF2 and Rust. Through his experience playing the game at a high level and dealing with skins for many years, he provides first-hand insight into the topics covered on the Tradeit.gg blog.\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#webpage\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/\",\"name\":\"How to Make a Private Match in CS2 (2026)\",\"description\":\"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/author\\\/william\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/author\\\/william\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/featured-7.png\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#mainImage\",\"width\":1920,\"height\":1080},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/how-to-make-a-private-match-in-cs2\\\/#mainImage\"},\"datePublished\":\"2025-06-14T05:13:00+00:00\",\"dateModified\":\"2026-07-20T22:49:11+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/\",\"name\":\"Tradeit.gg Blog | CS2, CS:GO, Rust & TF2\",\"alternateName\":\"Tradeit\",\"description\":\"Guides & Skin reviews for CS2, Rust, TF2 & Dota 2\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/tradeit.gg\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>How to Make a Private Match in CS2 (2026)<\/title>\n\n","aioseo_head_json":{"title":"How to Make a Private Match in CS2 (2026)","description":"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.","canonical_url":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#blogposting","name":"How to Make a Private Match in CS2 (2026)","headline":"How to Make a Private Match in CS2 (2026)","author":{"@type":"Person","name":"William Westerlund","url":"https:\/\/tradeit.gg\/blog\/author\/william\/","image":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2025\/07\/William-Westerlund.webp","description":"William\u2019s Tradeit articles cover CS2 skins, Steam trading, marketplace updates, and practical guides for Counter-Strike players.","jobTitle":"Lead Editor, Reviewer","knowsAbout":["CS2 skins","Skin trading","Steam guides"],"sameAs":["https:\/\/steamcommunity.com\/profiles\/76561198032362775\/","https:\/\/www.linkedin.com\/in\/william-westerlund-a47b17157\/"]},"publisher":{"@id":"https:\/\/tradeit.gg\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","width":1920,"height":1080},"datePublished":"2025-06-14T05:13:00+00:00","dateModified":"2026-07-20T22:49:11+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#webpage"},"isPartOf":{"@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#webpage"},"articleSection":"CS2, CS2 Guides"},{"@type":"BreadcrumbList","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog#listItem","position":1,"name":"Home","item":"https:\/\/tradeit.gg\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/#listItem","name":"CS2"}},{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/#listItem","position":2,"name":"CS2","item":"https:\/\/tradeit.gg\/blog\/cs2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/#listItem","name":"CS2 Guides"},"previousItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/#listItem","position":3,"name":"CS2 Guides","item":"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/","nextItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#listItem","name":"How to Make a Private Match in CS2 (2026)"},"previousItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/#listItem","name":"CS2"}},{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#listItem","position":4,"name":"How to Make a Private Match in CS2 (2026)","previousItem":{"@type":"ListItem","@id":"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/#listItem","name":"CS2 Guides"}}]},{"@type":"Organization","@id":"https:\/\/tradeit.gg\/blog\/#organization","name":"Tradeit.gg","description":"Tradeit.gg is the leading CS2 skin trading platform with instant trades, secure payments, and a 4.7 star Trustpilot rating.","url":"https:\/\/tradeit.gg\/blog\/","email":"Support@tradeit.gg","foundingDate":"2017-01-01","logo":{"@type":"ImageObject","url":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2024\/02\/cropped-logo-2.png","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#organizationLogo","width":427,"height":100,"caption":"Tradeit.gg logo"},"image":{"@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/tradeitgg","https:\/\/x.com\/tradeit_gg","https:\/\/www.instagram.com\/tradeit.gg\/","https:\/\/www.youtube.com\/channel\/UCld1sYd4aHddmPsJGa3YjQw","https:\/\/www.linkedin.com\/company\/tradeitgg\/","https:\/\/discord.com\/invite\/tradeit","https:\/\/www.reddit.com\/user\/tradeitofficial\/","https:\/\/steamcommunity.com\/groups\/tradeitgg","https:\/\/www.twitch.tv\/tradeitofficial","https:\/\/m.vk.com\/tradeitgg"]},{"@type":"Person","@id":"https:\/\/tradeit.gg\/blog\/author\/william\/#author","url":"https:\/\/tradeit.gg\/blog\/author\/william\/","name":"William Westerlund","image":{"@type":"ImageObject","url":"https:\/\/secure.gravatar.com\/avatar\/98055891c69dd4dde7c4d605b2badde2?s=96&d=mm&r=g"},"sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/WWesterlundd","https:\/\/www.linkedin.com\/in\/william-westerlund-a47b17157"],"description":"William brings 7 years of experience writing for multiple gaming blogs. He has more than 10,000 hours played in CS:GO (CS2) and have played around in other games such as TF2 and Rust. Through his experience playing the game at a high level and dealing with skins for many years, he provides first-hand insight into the topics covered on the Tradeit.gg blog."},{"@type":"WebPage","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#webpage","url":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/","name":"How to Make a Private Match in CS2 (2026)","description":"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/tradeit.gg\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#breadcrumblist"},"author":{"@id":"https:\/\/tradeit.gg\/blog\/author\/william\/#author"},"creator":{"@id":"https:\/\/tradeit.gg\/blog\/author\/william\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#mainImage","width":1920,"height":1080},"primaryImageOfPage":{"@id":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/#mainImage"},"datePublished":"2025-06-14T05:13:00+00:00","dateModified":"2026-07-20T22:49:11+00:00"},{"@type":"WebSite","@id":"https:\/\/tradeit.gg\/blog\/#website","url":"https:\/\/tradeit.gg\/blog\/","name":"Tradeit.gg Blog | CS2, CS:GO, Rust & TF2","alternateName":"Tradeit","description":"Guides & Skin reviews for CS2, Rust, TF2 & Dota 2","inLanguage":"en-US","publisher":{"@id":"https:\/\/tradeit.gg\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Tradeit.gg Blog | CS2, CS:GO, Rust &amp; TF2","og:type":"article","og:title":"How to Make a Private Match in CS2 (2026)","og:description":"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.","og:url":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/","og:image":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","og:image:secure_url":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","og:image:width":"1920","og:image:height":"1080","article:published_time":"2025-06-14T05:13:00+00:00","article:modified_time":"2026-07-20T22:49:11+00:00","article:publisher":"https:\/\/www.facebook.com\/tradeitgg","twitter:card":"summary_large_image","twitter:site":"@tradeit_gg","twitter:title":"How to Make a Private Match in CS2 (2025)","twitter:description":"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.","twitter:creator":"@https:","twitter:image":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2024\/02\/cropped-logo-1.png","twitter:label1":"Written by","twitter:data1":"William Westerlund","twitter:label2":"Est. reading time","twitter:data2":"17 minutes"},"aioseo_meta_data":{"post_id":"11895","title":"How to Make a Private Match in CS2 (2026)","description":"Step-by-step guide to host CS2 private matches with friends. Create 1v1 lobbies, use codes, invite non-friends, or set up custom servers.","keywords":null,"keyphrases":{"focus":{"keyphrase":"how to make a private match in CS2","analysis":{"keyphraseInTitle":{"score":9,"maxScore":9,"error":0},"keyphraseInDescription":{"score":3,"maxScore":9,"error":1},"keyphraseLength":{"score":6,"maxScore":9,"error":1,"length":8},"keyphraseInURL":{"score":5,"maxScore":5,"error":0},"keyphraseInIntroduction":{"score":3,"maxScore":9,"error":1},"keyphraseInSubHeadings":{"score":3,"maxScore":9,"error":1},"keyphraseInImageAlt":{"score":3,"maxScore":9,"error":1},"keywordDensity":{"score":0,"type":"low","maxScore":9,"error":1}},"score":47},"additional":[]},"primary_term":{"category":404},"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"featured","og_image_url":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","og_image_width":"1920","og_image_height":"1080","og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":"How to Make a Private Match in CS2 (2025)","twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"seo_analyzer_scan_date":"2026-07-20 22:50:40","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":"0","open_ai":null,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2025-08-04 06:35:09","updated":"2026-07-20 22:54:11"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/tradeit.gg\/blog\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/tradeit.gg\/blog\/cs2\/\" title=\"CS2\">CS2<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/\" title=\"CS2 Guides\">CS2 Guides<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\tHow to Make a Private Match in CS2 (2026)\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/tradeit.gg\/blog"},{"label":"CS2","link":"https:\/\/tradeit.gg\/blog\/cs2\/"},{"label":"CS2 Guides","link":"https:\/\/tradeit.gg\/blog\/cs2\/cs2-guides\/"},{"label":"How to Make a Private Match in CS2 (2026)","link":"https:\/\/tradeit.gg\/blog\/how-to-make-a-private-match-in-cs2\/"}],"featured_image_src":"https:\/\/tradeit.gg\/blog\/wp-content\/uploads\/2026\/07\/featured-7.png","author_info":{"display_name":"William Westerlund","author_link":"https:\/\/tradeit.gg\/blog\/author\/william\/"},"lang":"en","translations":{"en":11895,"ru":13944},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/posts\/11895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/comments?post=11895"}],"version-history":[{"count":18,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/posts\/11895\/revisions"}],"predecessor-version":[{"id":31950,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/posts\/11895\/revisions\/31950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/media\/31915"}],"wp:attachment":[{"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/media?parent=11895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/categories?post=11895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tradeit.gg\/blog\/wp-json\/wp\/v2\/tags?post=11895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}