Tournament bracket website: publish matchups and update results

Give every match a fixed place, show how winners advance, and update confirmed results at the same public address.

In short

Give every match a permanent ID, show which earlier winners feed the next round, and mark unconfirmed scores as pending.

Publish one viewing link. When an organizer confirms a result, update the existing page so participants can check the same address again.

NOS Team built a fictional eight-team bracket for the Harbor Games. We published the quarterfinals, semifinals, and final in one page, then changed the status from “Final pending · Semifinals confirmed” to “SF-02 confirmed · Amber Arrows 2–0.” The original public address showed the revised status after the edit.

What should a tournament bracket website include?

Start with the information a participant needs to follow the competition:

  • Round names that make the progression clear.
  • Permanent match IDs such as QF-01, SF-02, and F-01.
  • Feed labels that state which earlier winners enter a later match.
  • Scores and winner styling only after the organizer confirms the result.
  • A visible pending state for a match that has not been decided.

The fictional page uses seven match records for eight teams. QF-01 through QF-04 feed two semifinals, and SF-01 plus SF-02 feed F-01. The final keeps both scores as dashes because that result was not confirmed in the example.

NOS Code view showing the fictional Harbor Games bracket HTML and its opening preview
The complete bracket page in Code, with the initial pending status visible in the preview.
NOS View showing the fictional Harbor Games bracket before the status update
View shows the reader-facing bracket before the semifinal status was updated.

How do you make a tournament bracket website?

  1. List the competitors once. Use one spelling for every team throughout the bracket.
  2. Assign match IDs before adding scores. Keep the IDs when a result changes.
  3. Connect the rounds. Label a semifinal with the quarterfinal winners that will enter it, then do the same for the final.
  4. Separate confirmed and pending results. Do not style a winner while a score is still under review.
  5. Build one complete mobile page. Put the round headings, match cards, status, and boundary note in one HTML file.
  6. Check the public copy. Open the viewer link at phone width before sending it to participants.

In our example, the first public copy named the two confirmed semifinal winners while leaving F-01 pending. The page also stated that it was a viewing copy rather than registration, scheduling, or scorekeeping software.

NOS Share panel for the fictional Harbor Games tournament bracket
The Share panel identifies the viewer link and says that people with it can read the page without signing in.
Public phone view of the fictional bracket before the semifinal status update
The original public copy showed the pending final status and the first quarterfinal match cards.

How should match IDs work across rounds?

A match ID should identify the slot, not the team currently occupying it. QF-01 remains QF-01 after Redwood Rooks wins. SF-01 can say “Winner QF-01 vs QF-02” before both competitors are known. This keeps the route understandable without renaming later matches each time a team advances.

Use a separate status line for the newest confirmed result. That gives a returning participant one place to look for the latest change while the full bracket remains below it.

How do you update tournament results on the same page?

Open the existing NOS page and choose Edit. Select the visible text that needs to change, replace it with the confirmed result, and finish with Done. We used ordinary browser input to replace the status line; the page remained in its original editing mode throughout the change.

NOS Edit mode open on the fictional bracket before the result status changed
Edit mode on the existing page before the status line was replaced.
NOS View showing the confirmed SF-02 result on the same bracket page
View after the status changed to “SF-02 confirmed · Amber Arrows 2–0.”

Next, reopen the public address you already sent. In this test, that address displayed the revised SF-02 status. Participants scrolling past the quarterfinals could still follow QF-04 into both semifinals and the pending final.

Public phone view showing the updated SF-02 result at the original share address
The original viewer address shows the revised result status.
Lower public phone view showing QF-04, both semifinals, and the pending final
The later rounds preserve their match IDs and feeder labels below the updated status.

What is the difference between a bracket and an event schedule?

An event schedule answers what happens at each time. A bracket answers who advances from one match into another. If participants also need start times, rooms, or staff cues, keep those details in an event schedule and link it from the bracket instead of forcing both jobs into one dense chart.

If the competition also needs directions, entry instructions, and a contact route, the event link guide covers the wider event page. The bracket can remain the compact source for matchups and confirmed results.

What can go wrong when results change?

The risky edit is changing a team name in one round but not the later round it feeds. Check the affected match ID, winner name, next-round participant, score, and status together. Keep an unconfirmed result visibly pending instead of filling a blank with a guess.

Phone width exposed another practical constraint in our example: an eight-team bracket became easier to scan when the rounds stacked vertically. A wide desktop tree can become too small to read on a phone. The mobile copy should preserve the round order even when it cannot preserve a side-by-side tree.

When not to do this

  • Do not use a static bracket page when several officials must enter live scores at the same time.
  • Do not use it for registration, payments, seeding rules, dispute handling, or automatic notifications.
  • Do not publish participant contact details, private eligibility records, or other information that does not belong in a public viewing copy.
  • Do not mark a winner until the organizer has confirmed the result through the competition’s real process.

Using NOS for a tournament bracket

NOS Workspace held the finished bracket HTML, showed it in View, opened the visible status text in Edit, and provided a viewer address from Share. In this example, the viewer address opened without a sign-in form and reflected the saved status change on the existing page. The bracket itself remained a static viewing copy; NOS did not calculate winners or run the tournament.

Questions people ask

Can I make a tournament bracket website without a database?

Yes, for a small viewing copy that one organizer updates. Give each match a fixed ID, write the confirmed scores into the page, and leave undecided matches visibly pending.

How do I show where a semifinal team came from?

Label the semifinal slot with the earlier match ID, such as Winner QF-01. Replace the placeholder with the team name after the result is confirmed, but keep the semifinal match ID unchanged.

Can participants edit the bracket from the viewer link?

Not in the tested NOS setup. The Share panel said that anyone with the viewer link could read the page without signing in and could not edit it.

Should I put the schedule inside the bracket?

Only when the added time and location details remain easy to read. For a larger event, keep the full schedule on its own page and link it from the bracket.

What should stay pending?

Any score, winner, or later-round participant that the organizer has not confirmed. A visible pending state is safer than a guessed result.

Keep reading