World Fleet - Operator Leaderboard, Fleet Detail & Owner Comparison
The World Fleet area answers one question for charterers, brokers and owners: who controls what tonnage, and how well do they trade it? It is three linked pages - a sortable, paginated operator leaderboard (/world-fleet), a deep per-operator detail page (/fleet/<op>) covering fleet list, composition, trade lanes, 90-day activity, a 12-month trading-volume chart and an Operator Efficiency Index, and a side-by-side comparison board (/fleet/compare) holding up to four operators at once.
Fleet commercial summary (top of every operator page)
Every operator page (Fleet → World Fleet → an operator, URL /fleet/<slug>) now opens with a Fleet commercial summary - a broker-style brief that synthesises the whole fleet at a glance, all from data the site already computes. It carries: a one-line headline (fleet size, total DWT, dominant tonnage band & type, efficiency rank, live utilisation); a KPI strip (vessels, total DWT, live laden utilisation, OEI vs peers, load-port PAI, modelled tonne-miles/yr); and short sections for Fleet profile (size/age/flag mix with a DWT-band bar), Deployment now (laden vs ballast, at sea / anchor / port), Trade pattern (busiest laden lanes over the window, main discharge regions, and the all-history structural footprint), Commercial performance vs peers (the modelled idle-adjusted TCE proxy and OEI, decomposed into laden-day ratio, ballast & idle-wait share and load-port quality), Activity & momentum (laden voyages and tonne-miles over 12 months, with a last-quarter accelerating / steady / easing read), and Positioning (how the fleet repositioned in the past fortnight, and how many ships are opening vs committed).
Honest by construction. Composition is the current fleet; lanes and activity cover the recent window; the structural footprint is all-history. Earnings are modelled (lane rate × laden-days) - not booked fixtures - and the summary labels low-confidence / thin-sample reads and suppresses any sentence it has no data for, rather than guessing.
Do this now + members-only access
Below the commercial summary, the operator page now carries a Do this now shore-control action list for owners: it scans the live fleet and surfaces the ships that need a commercial decision right now - Open soon (laden, opening - line up her next load), Reposition (ballasting - confirm the best-paying load region), At anchor (watch idle / demurrage), and Stale data (verify her position before fixing) - prioritised, each linking straight to the ship. Ships that are fixed or mid-voyage are omitted, so the list is only what is actionable today.
Members-only. The World Fleet leaderboard and every operator page, along with the Market, Freight Index and FFA pages, now require a (free) login - this competitive + freight intelligence is for members. The site-wide Freight Index ticker stays visible to everyone as a taster.
What this data is (and is not) - read this first
Every number is built from two sources stitched together: live AIS broadcasts (where each ship is, what state it is in) and contact/registry data that assigns each ship to an owner / ship manager. The leaderboard intro spells out the key caveat in bold: these figures measure fleet size and movement, not financial performance or charter terms. You cannot read profitability, day-rates or commercial standing off this page - only physical tonnage and how it is being deployed.
- How operators are formed. Each ship's raw owner/manager string is normalised: a role prefix (
Head Owner,Ship Manager,Disponent Owner,Beneficial Owner,Operator,Manager,Owner) is stripped, then the remainder is mapped to a canonical name. The top-50 groups are manually merged across sub-entity spellings - the intro's worked example isCOSCO+COSCO Shipping Bulkcollapsing into a singleCOSCO Group. Smaller operators appear under the name reported in the contact data, so you may occasionally see two spellings of the same minor outfit. - De-duplication. Each (ship, operator) pair is counted once even when one ship carries many contact rows or several raw company spellings that normalise to the same canonical name - so a fleet count is distinct hulls, not contact records.
- One-ship operators are hidden by default. The leaderboard requires 2+ ships minimum, because single-ship "owners" are usually ship-specific SPVs that add noise rather than signal.
- Freshness. Aggregates are cached and refresh every 30 minutes; newly added vessels or contacts appear on the next refresh. The cache auto-invalidates the moment the underlying ship-contact or vessel-reference tables change, so a manual data fix can surface before the timer elapses.
- Methodology link. Under the intro, a Methodology link toggles an in-page panel (hidden by default) restating exactly how the canonical operator, ship count, total DWT, average age and top segment are derived, and noting the 30-minute cache. Use it to caveat anything you quote externally.
Why it matters: when you size a counterparty's tonnage or look for an owner with spot ships in a region, you are reading a physical-position picture, not a broker's order book. Treat a missing or mis-merged operator as a data artifact, not a market fact - and use the report button (covered below) to flag it.
Leaderboard: the four KPI cards and the filter bar
Across the top of /world-fleet sit four KPI cards. They update live from the API as you filter:
- Operators tracked - count of distinct shipowner/manager groups (sub-label "distinct shipowner / manager groups"). This is the server-side universe size for your current Segment/Min-ships query; it shrinks as you tighten those server filters.
- Vessels covered - total ships summed across every operator in the current list (sub-label "across all operators in this list"). A coverage sanity-check and the denominator behind any share you compute.
- Top operator - the name of the largest fleet in the current view (rendered in a smaller font so long names fit), with a sub-line showing its ship count and total DWT, e.g. "836 ships · 70.5M DWT". Because the table defaults to ship-count-descending, this card mirrors row #1 of the unsearched list.
- Showing - how many operators survive your search + filters right now (sub-label "after filters"). Pair it with the "X of Y shown" counter on the right of the filter bar to gauge how aggressive your filter is.
The filter bar below holds the controls:
- Search box ("🔍 Search operator name…", min-width 260px) - a client-side, case-insensitive substring filter on the operator name. It filters instantly as you type and resets you to page 1. It does not hit the server, so it is fast but only searches the names already loaded (up to 2,000 operators are fetched).
- Segment dropdown - All / Bulk Carrier / MPP / MPP/Heavy / General Cargo / Sea River Type / OHBS. Selecting one re-queries the server and keeps only operators whose top (most common) segment exactly equals that value - not operators who own any ship of that type. A diversified owner whose plurality is bulk will not appear under "General Cargo" even if they run a few.
- Min ships dropdown - 2+ / 5+ / 10+ / 50+ / 100+. Raises the floor on fleet size and re-queries the server. Use 50+ or 100+ to isolate the majors; 2+ (the default) surfaces the long tail. Note: the underlying list is always built at the 2+ floor, so 2+ shows everything tracked.
- Compare selected button - hidden until you tick 2+ checkboxes (see next section); the live count shows inside it as "Compare selected (N)". Clicking it opens
/fleet/comparepre-loaded with your selection.
How to use it: to find mid-sized pure-bulk operators, set Segment = Bulk Carrier and Min ships = 10+, then read the "Showing" card for the pool size. To hunt a specific counterparty, just type into search.
Leaderboard table: columns, sorting, selection and pagination
The table has nine columns. Click any header carrying a sort arrow to sort; click again to flip direction. The active sort column header turns the accent colour. Numeric columns sort high→low first; the Operator name column sorts A→Z first.
- # - rank within the current sort/filter, computed off the paginated slice: on page 2 at 10 rows/page the first row reads 11, not 1. It is not a stored permanent rank - re-sort and the numbers re-flow.
- Checkbox (the narrow unlabelled column) - selects the operator for comparison. Maximum 4; ticking a fifth pops an alert ("Max 4 operators for comparison.") and refuses. Clicking inside the checkbox cell does not navigate (the click is intercepted with
stopPropagation). Selections persist as you page, search and filter. - Operator - the canonical name as an accent-coloured link to that operator's detail page; the rest of the row is also clickable and navigates to the same page.
- Ships - vessel count; the default sort key (
ship_countdescending). The single most important sizing number. - Σ DWT - cumulative deadweight across the fleet, abbreviated (e.g.
70.5M,340k). The true measure of cargo-carrying muscle - a fleet of many small ships can rank high on Ships yet low on Σ DWT. - Avg DWT (hidden on screens under 780px) - mean ship size; a quick read on whether the operator skews Handy/Supra (small) or Panamax/Cape (large).
- Avg age (hidden on narrow) - fleet average age in years to one decimal, derived from build year vs the current year. Younger fleets imply lower off-hire and better eco performance; an old average can flag a value operator or upcoming recycling. Shows
-when no build years are known. - Top segment (hidden on narrow) - the operator's plurality segment as a coloured pill: blue for anything containing "bulk", amber for MPP, green for tanker, pink for Sea-River, grey for unspecified/other. A fast visual scan of who does what.
- Top flags (hidden on narrow) - up to three flag-state codes with their ship counts, the leading flag emphasised (slightly brighter). Reveals a fleet's registry footprint (e.g. heavy Panama/Liberia/Marshall Islands) - relevant for PSC and sanctions screening and operational expectations.
Pagination bar (below the table, always shown when there are rows): a range readout on the left ("1-10 of 1,732"), a centred numbered page strip with ‹ Prev / Next › buttons that collapses long ranges to one page either side of the current page plus first/last with ellipses (e.g. ‹ 1 2 3 … 41 42 43 ›; the active page is the filled accent button, Prev/Next grey out at the ends), and a Rows selector (10 / 25 / 50 / 100 / All). Default is 10 rows - deliberate, since the list runs 1,700+ operators; "All" is capped at 1,000 rows. Your chosen page size is remembered across visits (stored in localStorage). Changing sort, search, filter or page size always jumps you back to page 1, and clicking a page number smoothly scrolls the table back into view.
Leaderboard: Fleet standings - who is moving (weekly)
Above the operator table, the Fleet standings card turns our daily operator snapshots into a live, week-by-week read of who is growing and who is shrinking across the whole tracked fleet - the leaderboard as a moving race rather than a single-day photo.
- Fastest growing / shrinking - the operators that added or lost the most ships over the window, each with its net change and a tiny sparkline of its ship count week by week. Only operators with 15 or more ships rank here, so a one-to-two ship outfit never headlines the board.
- Rank race - a bump chart of the biggest operators' rank over the weeks (rank 1 = biggest fleet, a higher line is better). Flat lines mean a stable pecking order; a line crossing another is one operator overtaking another on fleet size.
- Rank changes - a plain list of who passed whom, and in which week.
Like the per-operator Fleet timeline, this is built from a young snapshot runway that deepens by one week every week: with only a handful of weeks so far the moves are small and the rank race is nearly flat for the mega-fleets, so we label it an early view. It becomes far more telling as the history accrues - the value is that the record is being kept from day one and cannot be back-filled.
Operator detail - header, report button and KPI cards
Clicking any operator opens /fleet/<slug>, a public, SEO-indexed page: on load the browser title and meta/Open-Graph/Twitter tags rewrite to "Name - N vessel fleet | shipdata.net" with a canonical URL, so the page ranks for searches like "oldendorff fleet". A breadcrumb ("← All operators") returns you to the leaderboard. The header shows the operator name and a sub-line: "N vessels · ΣDWT … · Avg age … yrs".
Top-right is the ⚑ Report incorrect data button - covered in its own section below.
A row of KPI cards summarises the fleet (composition is over the full loaded fleet; activity uses a 90-day window):
- Vessels - fleet size ("in operator fleet").
- Total DWT - cumulative capacity, abbreviated ("cumulative capacity").
- Avg DWT - per-vessel mean size ("per vessel").
- At sea - the percentage of the fleet currently underway, with a sub-line giving the raw count ("N of M underway"). A high share means the fleet is working/repositioning rather than waiting; a low share with many ships in port or at anchor can signal idle tonnage or congestion exposure. The percentage comes from live open state-log rows, so it is a right-now snapshot.
- Load-port PAI - the average Port Activity Index of the operator's laden load ports, voyage-weighted, shown as a multiple (e.g.
1.8×) and colour-coded: green ≥ 1.5 (premium, high-throughput hubs), amber 0.8-1.49 (mid), red < 0.8 (thin/low-activity ports);-when there is no laden-departure data. It reads the quality of the ports this owner actually loads at. Sub-label: "avg port-quality on laden departures". - OEI score - appears only when the operator has enough recent voyage history to score. Shows the composite Operator Efficiency Index (e.g.
+12.3), colour-coded green ≥ +10 ("Above peers"), amber between - 10 and +10 ("On par"), red < - 10 ("Below peers"), plus a sub-line giving the operator's rank within its size bucket (e.g. "rank 3 of 41 (20-99 ships)"). Buckets are labelled 1-19 / 20-99 / 100-299 / 300+ ships so a small outfit is judged against peers, not against Oldendorff.
Live 3D globe. Under the KPI cards, every operator page now shows the operator’s whole fleet on the live 3D globe - the same interactive globe as the homepage, but scoped to just these ships and their real-time positions (spin, zoom, hover a ship for its name and status). It is the same live-position engine as My Fleet, so a broker or counterparty can see at a glance where the owner’s tonnage is deployed right now.
Operator detail - Operator Efficiency vs peers (the OEI panel)
When peer data exists, a dedicated Operator Efficiency vs peers card is inserted between the KPIs and the composition charts. Its heading names the size bucket, the number of operators in it, and the 180-day measurement window. Each metric is a horizontal bar where the blue fill = this operator and an orange tick = the peer-bucket average; the right-hand value shows the operator's figure, the peer figure, and a coloured delta with an arrow (green ▲/▼ = better than peers, red = worse, grey - = essentially equal).
- Laden at sea - share of tracked days spent sailing laden (carrying cargo). Higher is better - it is revenue time; the bar treats up arrows as good.
- Ballast at sea - share of tracked days sailing empty (repositioning). Lower is better - less unpaid steaming, so a downward delta is green.
- Anchorage wait - share of tracked days spent at anchor on the ballast (pre-load) side only. This deliberately excludes laden discharge-queue waiting, because that is market-/port-driven congestion the operator cannot control; only the controllable, non-earning "waiting to load while empty" time is counted. Lower is better.
- Load-port PAI - the same port-quality metric as the KPI, charted against the peer average. Higher is better (premium hubs).
The card footer explains how the composite is built: a weighted blend of the four peer deltas, leaning heavily on laden time and avoided waiting, with ballast share and port quality as lighter modifiers. It also discloses coverage - "computed across N vessels with recent voyage history out of M total fleet" - which is the honesty check: if only a handful of a large fleet have recent voyages, treat the score as indicative. Why it matters: two owners of identical size can differ sharply on how much of their fleet's time actually earns; OEI surfaces the better-utilised operator within a fair peer set.
Operator detail - composition charts, trade lanes and discharge regions
Below the KPIs sit three small bar-chart cards (each shows the top 8 entries, longest bar = largest count, with the raw count at the right):
- Segment composition - fleet split by vessel segment (Bulk Carrier, MPP, etc.; ships with no segment fall under "Unspecified"). Tells you how pure-play vs diversified the operator is.
- Age distribution - ships bucketed into <5 / 5-9 / 10-14 / 15-19 / 20+ years. A fleet weighted to the young buckets signals modern, eco tonnage; a 20+ skew flags an ageing fleet near recycling or special survey.
- DWT bands - ships grouped into the site's standard dry-bulk size bands. Shows the operator's tonnage class mix at a glance - e.g. mostly Supramax vs a Capesize-heavy book.
A two-column row follows:
- Top trade lanes (last 90 d) - a table of the operator's busiest laden origin→destination pairs over the trailing 90 days, columns: Origin and Destination (each a clickable link to that port's page), Voyages (count, the sort order), Avg DWT and Avg sea days (both hidden on narrow screens). Only laden legs where load and discharge ports differ are counted. This is the heart of the page for a charterer: it shows where an owner habitually trades, the typical ship size on each lane, and the voyage length - useful for sourcing tonnage that already runs your route. If there is no laden activity it reads "No laden voyages recorded in the last 90 days."
- Discharge region concentration - a bar chart of the macro sea-regions where this fleet most often discharges laden cargo (top entries by voyage count). It answers "who does this owner deliver to?" - e.g. heavy China/Far East discharge signals an iron-ore/coal import trade. Read alongside the lanes table to understand directional bias.
Operator detail - 12-month activity & trading volume, and the fleet list
The full-width 12-month activity & trading volume card loads separately (a heavier query, fetched in parallel so it is usually ready by the time you scroll to it; it can show "Activity series unavailable" if the query fails). It opens with three annual stat tiles:
- Annual laden voyages - count of laden legs over the trailing ~12 months.
- Annual ΣDWT × voyages - total deadweight summed across laden voyages; rewards both fleet size and how often it trades.
- Tonne-miles (proxy) - Σ(DWT × great-circle distance) for laden legs, the standard tramp-shipping yardstick for cargo work done (capacity × distance). Distances are straight-line (haversine) approximations, hence "proxy".
Below is a dual sparkbar chart, one column per month: the blue bar (top) is total voyages that month, the green bar (bottom) is the ΣDWT of laden voyages (cargo capacity moved). Each column has a hover tooltip with the month label, total and laden voyages, and laden DWT. Months with no activity show as empty bins so the timeline stays continuous. Read it for seasonality and momentum - a fleet ramping voyages and DWT into recent months is trading harder; a fade can mean lay-up, sales, or simply gaps in tracking.
The final card is the Fleet list - operational status, every vessel mapped to this operator. It opens in Cards view by default: one operational status card per ship - the same at-a-glance read as your own My Fleet - with the ship name (links to its /ship/<imo> page), a subhead (type · DWT · flag · age), its precise live status on a colour-keyed dot (under way, at anchor, in port, loading, discharging, stopped) and a detail line (speed & draft, or which port it is in/off), chips for laden / ballast, current state and the open-market outlook, plus its destination & ETA, when it was last seen, and the port it is at or off. A search box ("🔍 Search ship name / IMO…") filters the cards client-side on name or IMO, with an "X of Y shown" counter; for very large operators the cards show the 60 largest hulls (search, or switch to Table, for the rest). The Table toggle (top-right of the card) swaps to the classic sortable column list. Columns: Ship (links to the vessel's /ship/<imo> page), DWT, Built (narrow-hidden), Type (narrow-hidden), Flag (narrow-hidden), State and Port (narrow-hidden). Click any sortable header to sort (default DWT descending; text columns sort A→Z first). The State column is a coloured pill: blue "Sea", green "Port", amber "Anchorage", grey for idle/other. The list renders up to 500 rows. Why it matters: this is the drill-down for vetting - confirm a specific hull belongs to the owner, see its size/age/flag, and check whether it is at sea, in port or waiting right now.
Operator detail - Fleet timeline: weekly size and tonnage
The Fleet timeline card turns our daily operator snapshots into a week-by-week picture of how a company's fleet is changing - not where its ships are today, but whether the fleet itself is growing, holding or being renewed. Each bar is one ISO week: the blue (top) bar is the number of ships in the fleet, the green (bottom) bar is total deadweight (DWT). Faded or dashed bars are partial or carried-forward weeks (see below).
Once at least three full weeks of history exist, the card adds a plain-language momentum read:
- Expanding / Contracting - net ships added or lost over the window, noise-floored so a one-ship wobble reads as Holding, not a trend.
- Renewing - a special case where the ship count is flat or down but the average hull is getting bigger: the operator is trading up to larger tonnage rather than adding numbers.
- KPI tiles - net ships, net DWT, average change per week, average DWT per ship (with an up or down arrow), the fleet's size-class band, and how many full weeks are tracked.
- Weekly net-change bars - ships added (green) or lost (red) each week, plotted around a zero line so small moves on a large fleet stay visible and honest.
The stand-out panel is Why tonnage moved: it splits the total change in deadweight into exactly two parts that always sum to the net - a count effect (more or fewer hulls at today's average size) and a mix effect (the average hull getting bigger or smaller). It answers a question a headcount chart cannot: when a fleet loses three ships but its tonnage barely falls, the mix effect shows the remaining ships are larger.
How to read it honestly. The snapshot runway is young and deepens by one week every week, so we are deliberately conservative: partial weeks at the window edges are dashed and left out of the momentum maths; a day the snapshot job missed is carried forward from the day before (never shown as a drop to zero); and until three full weeks exist the card shows only the raw size-and-tonnage chart with a building-history note instead of a verdict. A single very large ship being re-assigned can move total DWT with no change in ship count, so ship-count and tonnage momentum are always shown separately.
Operator detail - Shipping now & deployment shift (competitor intel)
Two live competitor-intelligence panels sit alongside the trade lanes. Shipping now - live lanes reads the operator's own ships that are at sea laden right now and groups them by origin→destination region, so you see where a competitor is actually putting tonnage today - not weeks later when the voyage finally completes. It is built from the in-transit layer (declared destinations), so it is a leading, lower-certainty read by nature.
Deployment shift (14 d) compares how many of the operator's ships sat in each sea region today versus about two weeks ago, from the daily position snapshots. A green positive delta means the operator moved tonnage into that region; a red negative delta means they pulled out - fleet rotation that hints where a rival expects demand. Both panels deepen and steady as the position history accrues.
Trade footprint (where they work) is the structural companion to those live panels: from the trade footprint (visited countries across the whole fleet, all-history, covering even ships AIS hasn't tracked) it bars out how many of the operator's ships have worked each macro-basin, then lists the top countries by ship count. Where the deployment-shift shows recent movement, this shows the operator's enduring trading geography - which basins and countries this fleet actually serves.
Reporting bad data & the comparison board (/fleet/compare)
⚑ Report incorrect data. The report button opens a modal so anyone (including the operator) can flag errors; submissions persist server-side and ping the admin team. Fields: an Issue type dropdown (Wrong vessels in fleet list / Operator name is incorrect / Should be merged with another group / Request removal from site / Other), a Message box (a minimum 10 characters is enforced, with a placeholder example like "IMO 9123456 is no longer in our fleet, sold 2025"), and an optional name / company / email field ("Anonymous if blank"). On success it shows "✓ Sent - thank you. We will review." and auto-closes. This is the correct channel when the auto-merge has split or mislabelled an operator - flag it rather than treating the artifact as a market fact.
Comparison board (/fleet/compare). Reached via the leaderboard's "Compare selected" button or by URL with ?ops=slug1,slug2,…. It renders 2-4 operators side by side, one card per operator (cards reflow responsively). A toolbar at top lets you add more: type a name and click + Add (or press Enter) - the name is slugified and appended to the URL; a status line shows how many operators are loaded. Each card has an × in the corner to remove that operator, and the operator name links through to its full detail page. If a typed/slugged name does not resolve, the card shows "Operator not found."
Each card stacks the same comparable rows so differences pop at a glance, with the same green/amber/red colour logic as the detail page:
- OEI score - the headline figure, large and colour-coded (green ≥ +10, amber - 10 to +10, red below).
- Bucket - the size bucket plus rank, e.g. "mid · #3/41".
- Vessels, Total DWT, Avg DWT, Avg age - the core sizing numbers.
- Laden ratio and Anchorage wait - each shown as the operator's % with a "vs peers …%" delta and good/bad colour (higher laden = good, lower wait = good), present only when peer data exists.
- Load-port PAI - the port-quality multiple, coloured on the same 1.5 / 0.8 thresholds.
- Top segment - the plurality segment with its ship count, e.g. "Bulk Carrier (212)".
- At sea now - live share of the fleet underway.
Why it matters: the compare board is the fastest way to choose between counterparties of similar size - line up two owners and instantly see who is younger, larger, better-utilised (OEI/laden), less prone to waiting, and loading at better ports, before you fix.