diff --git a/app/javascript/mastodon/components/__tests__/short_number-test.tsx b/app/javascript/mastodon/components/__tests__/short_number-test.tsx
new file mode 100644
index 0000000000..e221ca1eb8
--- /dev/null
+++ b/app/javascript/mastodon/components/__tests__/short_number-test.tsx
@@ -0,0 +1,80 @@
+import { IntlProvider } from 'react-intl';
+
+import { render, screen } from '@testing-library/react';
+
+import { ShortNumber } from '../short_number';
+
+function renderShortNumber(value: number) {
+ return render(
+
+
+ ,
+ );
+}
+
+describe('ShortNumber Component', () => {
+ it('does not abbreviate numbers under 1000', () => {
+ renderShortNumber(999);
+ expect(screen.getByText('999')).toBeDefined();
+ });
+
+ it('formats thousands correctly for 1000', () => {
+ renderShortNumber(1000);
+ expect(screen.getByText('1K')).toBeDefined();
+ });
+
+ it('truncates decimals for 1051', () => {
+ renderShortNumber(1051);
+ expect(screen.getByText('1K')).toBeDefined();
+ });
+
+ it('truncates decimals for 2999', () => {
+ renderShortNumber(2999);
+ expect(screen.getByText('2.9K')).toBeDefined();
+ });
+
+ it('truncates decimals for 9999', () => {
+ renderShortNumber(9999);
+ expect(screen.getByText('9.9K')).toBeDefined();
+ });
+
+ it('truncates decimals for 10501', () => {
+ renderShortNumber(10501);
+ expect(screen.getByText('10K')).toBeDefined();
+ });
+
+ it('truncates decimals for 11000', () => {
+ renderShortNumber(11000);
+ expect(screen.getByText('11K')).toBeDefined();
+ });
+
+ it('truncates decimals for 99999', () => {
+ renderShortNumber(99999);
+ expect(screen.getByText('99K')).toBeDefined();
+ });
+
+ it('truncates decimals for 100501', () => {
+ renderShortNumber(100501);
+ expect(screen.getByText('100K')).toBeDefined();
+ });
+
+ it('truncates decimals for 101000', () => {
+ renderShortNumber(101000);
+ expect(screen.getByText('101K')).toBeDefined();
+ });
+
+ it('truncates decimals for 999999', () => {
+ renderShortNumber(999999);
+ expect(screen.getByText('999K')).toBeDefined();
+ });
+
+ it('truncates decimals for 2999999', () => {
+ renderShortNumber(2999999);
+ expect(screen.getByText('2.9M')).toBeDefined();
+ });
+
+ it('truncates decimals for 9999999', () => {
+ renderShortNumber(9999999);
+ expect(screen.getByText('9.9M')).toBeDefined();
+ });
+});
diff --git a/app/javascript/mastodon/components/short_number.tsx b/app/javascript/mastodon/components/short_number.tsx
index 37201a5e1d..5fd0bba8ed 100644
--- a/app/javascript/mastodon/components/short_number.tsx
+++ b/app/javascript/mastodon/components/short_number.tsx
@@ -51,6 +51,7 @@ const ShortNumberCounter: React.FC = ({ value }) => {
);