Committed
Liam O'Brien committed to Cincinnati for the 2026 season
February 16, 2026
Bio
Fair Market Value
Stats
2025
- Passer Rating
-
146.9
76th of 390 QBs
- Passing Yards
-
2376
41st of 396 QBs
- Passing Touchdowns
-
19
31st of 396 QBs
- Interceptions
-
6
69th of 396 QBs
- Completion%
-
67%
69th of 390 QBs
- Yards per Attempt
-
7.6
102nd of 390 QBs
- Completions
-
211
29th of 396 QBs
- Passing Attempts
-
314
39th of 396 QBs
- Rushing Yards
-
548
17th of 394 QBs
- Rushing Touchdowns
-
7
22nd of 394 QBs
Career Stats
| SEASON | SCHOOL |
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
G
Games Played
|
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
COMP%
Completion Percentage
|
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
YDS
Passing Yards
|
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
TD
Passing Touchdowns
|
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
INT
Interceptions Thrown
|
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
RTG
Passer Rating
|
|---|---|---|---|---|---|---|---|
| 2022 |
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
Penn Quakers
|
1 | 80% | 65 | 0 | 0 | 189.2 |
| 2023 |
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
Penn Quakers
|
10 | 50% | 17 | 0 | 0 | 121.4 |
| 2024 |
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
Penn Quakers
|
8 | 66% | 1018 | 13 | 2 | 174.3 |
| 2025 |
{
const tt = $el.querySelector('[data-tooltip-box]');
if (tt) {
const tr = tt.getBoundingClientRect();
const pad = 8;
if (tr.right > window.innerWidth - pad) nudge.x = window.innerWidth - pad - tr.right;
if (tr.left < pad) nudge.x = pad - tr.left;
}
});
"
@mouseleave="open = false">
Penn Quakers
|
10 | 67% | 2376 | 19 | 6 | 146.9 |
| CAREER | 29 | 67% | 3476 | 32 | 8 | 154.5 |