Top‑level functions/properties are simple and don’t require a class. A companion object is tied to a class and is useful for factory methods, constants that conceptually belong to the class, or Java interop (`@JvmStatic`).
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "companion-object-vs-top-level-members:-when-woul"
function explain() {
// Start from the core idea:
// Top‑level functions/properties are simple and don’t require a class. A companion object is
}