Back to guides
Classroom decision guideUpdated July 22, 20263 min read

How to split a class into fair groups

“Fair” can mean equal chance, access to support, room to participate, or a reasonable workload. Define it for the lesson first. Only then decide whether a transparent random split or a small number of private adjustments is justified.

A teacher builds fair classroom groups with puzzle-piece student cards and a friendly balance scale.

Guide visual

Fair classroom groups

Workable groups that account for class dynamics.

26 studentsfair sizesapart rules

Finish one sentence before making groups

Write: “For this activity, fair groups give every student…” A low-stakes icebreaker may need only an equal chance of assignment. A collaborative project may need access to specific knowledge or support. A discussion may need enough room for every student to speak.

The definition should describe the activity, not sort students into permanent types. If you cannot explain why a field or rule is necessary, leave it out.

Use the least intrusive grouping process

  1. Start random when any valid group works

    Random allocation is transparent and avoids pretending that the teacher can measure every social dynamic.

  2. Check the remainder

    When the class count does not divide evenly, decide whether smaller groups receive an advantage or an extra burden.

  3. Add only justified exceptions

    Use apart, together, attendance, or fixed rules for a clear instructional, accessibility, safety, or participation need.

  4. Generate privately

    Review the roster before display. Record the reason and expiry for temporary exceptions somewhere private and appropriate.

  5. Review student experience

    Look for isolation, repeated leadership burdens, friendship clusters that suppress participation, and groups with disproportionate support needs.

  6. Explain the method without exposing anyone

    A neutral statement such as “random groups with a few private support adjustments” is enough. Do not identify why a student was moved.

Results can verify structure, not fairness itself

  • Assigned count and capacity reveal unavoidable size differences. Whether a smaller group receives more speaking time or an unfair workload is a teaching judgment, not a solver metric.
  • Required fixed and apart adjustments report “No violations” in a valid result. A violation in either card indicates a solver defect rather than something to repair manually in the roster.
  • For repeated activities, the Pair Meeting Matrix shows who was grouped together more than once. It does not measure leadership burden, participation, accessibility, or social safety.
  • Cost Score and Attribute Balance describe the model that was configured. They cannot establish that the model’s definition of fairness was appropriate.
  • Before a roster is shared, its downloaded or copied assignment view still needs a privacy check for diagnoses, conflicts, accommodations, or teacher judgments.

Worked example: 26 students in groups near four

The preloaded example requests groups of four for 26 students, so equal group sizes are impossible. It also contains three apart rules, two fixed assignments, and a self-selected Preferred role field for the project.

Setup facts

  • 26 students
  • an unavoidable group-size remainder
  • three private apart requirements
  • two fixed assignments

Review the result

  • Check whether the smaller groups receive a meaningful advantage or burden.
  • Ask whether every apart and fixed rule is necessary and temporary.
  • Compare the role distribution, then remove the field if it does not improve this particular project.

Try this setup in GroupMixer

This tool is preloaded with the example from this guide. You can edit the participants, constraints, sessions, and balance settings before generating groups.

Enter one person per line in the first column. Optionally, add attribute columns such as gender, role, or skill-level on the right. Those attributes can then be used to balance groups and set additional rules.
Name
Use 1 session for a single round of groups. Increase sessions when you want multiple rounds with new group assignments for the same people.
People
26
Groups
7
Approx size
4
Force specific people into the same group in every session. Write one "clique" per line, with names separated by commas. Example: "Alex, Sam" keeps Alex and Sam together.
Prevent selected people from being placed in the same group. Write one set per line; everyone on a line is kept mutually apart. Example: "Alex, Sam, Jordan" keeps all three separated.
Pin specific people to a specific group across all sessions. Enter one name and one group number per row. This is useful for leaders, presenters, or anyone who must stay in a known group.
Name
Group
Set target counts for each attribute value inside each group. Keep auto distribute enabled for fair automatic targets, or edit the counts manually when you need exact control.
Preferred role
Automatic targets · All sessions
Groups 1-2Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Groups 3-4Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Group 5Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Groups 6-7Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Drag the handles in the bar to adjust the distribution, or edit the numbers next to the labels manually. A 0-target attribute is still active: the solver tries to keep that value out of the group. A non-allocated attribute is ignored by this balance target. Toggle an attribute on or off by clicking its label in the legend or bar.
Need even more control?
  • Partial attendanceSet which participants attend which sessions instead of assuming everyone is present every round.
  • Custom group capacitiesGive each group its own capacity and override those capacities for specific sessions when room sizes or staffing change.
  • Session-specific constraintsApply scoped rules only where they matter, then use global objectives such as Avoid Repeats for whole-schedule quality.
  • Weighted preferencesAdd preferences that can be violated when needed, then tune their weights relative to other goals.
  • Encounter targetsTarget how often selected people should all meet across the schedule, including exact, minimum, or maximum encounter counts.
  • Group visit targetsControl how often selected people visit selected groups across sessions for station rotations, task exposure, or visit caps.
  • Advanced constraint tuningFine-tune repeat limits, attribute-balance modes, penalties, and other constraint details beyond the landing-page controls.
  • Solver settingsAdjust runtime limits, deterministic seeds, solver family, and other optimization settings.
  • Result analysisInspect score breakdowns, constraint compliance, penalties, and saved results in more detail.
Quick Setup and the scenario editor use the same saved scenario. Settings hidden here remain intact.

Related guides