| (Mark One) | |||||
| QUARTERLY REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934 | |||||
For the quarterly period ended | |||||
| TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934 | |||||
| For the transition period from ___________ to ___________ | |||||
| (State or other jurisdiction of incorporation or organization) | (I.R.S. Employer Identification No.) | ||||
| (Address of principal executive offices) | (Zip Code) | ||||
| Title of each class | Trading Symbol(s) | Name of each exchange on which registered | ||||||
| þ | Accelerated filer | o | ||||||||||||
| Non-accelerated filer | o | |||||||||||||
| Smaller reporting company | Emerging growth company | |||||||||||||
| Item | Description | Page | ||||||||||||
| September 30, 2025 | December 31, 2024 | ||||||||||
| (Unaudited) | |||||||||||
| Assets | |||||||||||
| Current assets | |||||||||||
| Cash and cash equivalents | $ | $ | |||||||||
| Short-term marketable securities | |||||||||||
Accounts receivable, net of allowance for doubtful accounts of $ | |||||||||||
| Inventory | |||||||||||
| Income taxes receivable | |||||||||||
| Prepaid expenses and other current assets | |||||||||||
| Total current assets | |||||||||||
| Property and equipment, net | |||||||||||
| Goodwill | |||||||||||
| Other intangible assets, net | |||||||||||
| Long-term marketable securities | |||||||||||
| Operating lease assets | |||||||||||
| Finance lease assets | |||||||||||
| Other long-term assets | |||||||||||
| Total assets | $ | $ | |||||||||
| Liabilities and shareholders' equity | |||||||||||
| Current liabilities | |||||||||||
| Accounts payable | $ | $ | |||||||||
| Accrued compensation | |||||||||||
| Accrued liabilities and other | |||||||||||
| Current operating lease liabilities | |||||||||||
| Current finance lease liabilities | |||||||||||
| Total current liabilities | |||||||||||
| Long-term operating lease liabilities | |||||||||||
| Long-term finance lease liabilities | |||||||||||
| Long-term deferred tax liabilities | |||||||||||
| Other long-term liabilities | |||||||||||
| Total liabilities | |||||||||||
| Shareholders' equity | |||||||||||
Preferred stock, $ | |||||||||||
Common stock, $ | |||||||||||
| Additional paid-in capital | |||||||||||
| Retained earnings | |||||||||||
| Accumulated other comprehensive loss | ( | ( | |||||||||
| Total shareholders' equity | |||||||||||
| Total liabilities and shareholders' equity | $ | $ | |||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| 2025 | 2024 | 2025 | 2024 | ||||||||||||||||||||
| Statements of Operations: | |||||||||||||||||||||||
| Revenue | $ | $ | $ | $ | |||||||||||||||||||
| Cost of revenue | |||||||||||||||||||||||
| Gross profit | |||||||||||||||||||||||
| Operating expenses | |||||||||||||||||||||||
| Marketing and sales | |||||||||||||||||||||||
| Research and development | |||||||||||||||||||||||
| General and administrative | |||||||||||||||||||||||
| Costs related to exit and disposal activities | |||||||||||||||||||||||
| Total operating expenses | |||||||||||||||||||||||
| Income from operations | |||||||||||||||||||||||
| Other income, net | |||||||||||||||||||||||
| Income before income taxes | |||||||||||||||||||||||
| Provision for income taxes | |||||||||||||||||||||||
| Net income | $ | $ | $ | $ | |||||||||||||||||||
| Net income per share: | |||||||||||||||||||||||
| Basic | $ | $ | $ | $ | |||||||||||||||||||
| Diluted | $ | $ | $ | $ | |||||||||||||||||||
| Shares used to compute net income per share: | |||||||||||||||||||||||
| Basic | |||||||||||||||||||||||
| Diluted | |||||||||||||||||||||||
| Comprehensive Income (net of tax) | |||||||||||||||||||||||
| Comprehensive income | $ | $ | $ | $ | |||||||||||||||||||
| Common Stock | Additional Paid-In Capital | Retained Earnings | Accumulated Other Comprehensive Loss | Total | |||||||||||||||||||||||||||||||
| Shares | Amount | ||||||||||||||||||||||||||||||||||
| Balance at December 31, 2024 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | ( | — | — | ( | ||||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock and other | ( | ( | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | |||||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at March 31, 2025 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | ( | — | — | ( | ||||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock and other | ( | — | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | |||||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at June 30, 2025 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | — | — | ||||||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock and other | ( | — | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | ( | ( | |||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at September 30, 2025 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common Stock | Additional Paid-In Capital | Retained Earnings | Accumulated Other Comprehensive Loss | Total | |||||||||||||||||||||||||||||||
| Shares | Amount | ||||||||||||||||||||||||||||||||||
| Balance at December 31, 2023 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | ( | — | — | ( | ||||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock | ( | — | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | ( | ( | |||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at March 31, 2024 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | — | — | ||||||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock | ( | — | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | ( | ( | |||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at June 30, 2024 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Common shares issued on exercise of options and other, net of shares withheld for tax obligations | — | — | — | — | — | — | |||||||||||||||||||||||||||||
| Stock-based compensation expense | — | — | — | — | |||||||||||||||||||||||||||||||
| Repurchases of common stock | ( | ( | ( | ( | — | ( | |||||||||||||||||||||||||||||
| Net income | — | — | — | — | |||||||||||||||||||||||||||||||
| Other comprehensive income | |||||||||||||||||||||||||||||||||||
| Foreign currency translation adjustment | — | — | — | — | |||||||||||||||||||||||||||||||
| Net unrealized gains on investments in securities | — | — | — | — | |||||||||||||||||||||||||||||||
| Comprehensive income | |||||||||||||||||||||||||||||||||||
| Balance at September 30, 2024 | $ | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||
| Nine Months Ended September 30, | |||||||||||
| 2025 | 2024 | ||||||||||
| Operating activities | |||||||||||
| Net income | $ | $ | |||||||||
| Adjustments to reconcile net income to net cash provided by operating activities: | |||||||||||
| Depreciation and amortization | |||||||||||
| Stock-based compensation expense | |||||||||||
| Deferred taxes | ( | ||||||||||
| Interest on finance lease obligations | |||||||||||
| Loss on impairment of equipment | |||||||||||
| Impairments related to exit and closure of facilities | |||||||||||
| Loss (gain) on disposal of property and equipment | ( | ||||||||||
| Other | ( | ||||||||||
| Changes in operating assets and liabilities: | |||||||||||
| Accounts receivable | ( | ||||||||||
| Inventories | ( | ||||||||||
| Prepaid expenses and other | ( | ||||||||||
| Income taxes | ( | ||||||||||
| Accounts payable | ( | ||||||||||
| Accrued liabilities and other | |||||||||||
| Net cash provided by operating activities | |||||||||||
| Investing activities | |||||||||||
| Purchases of property, equipment and other capital assets | ( | ( | |||||||||
| Proceeds from sales of property, equipment and other capital assets | |||||||||||
| Purchases of marketable securities | ( | ( | |||||||||
| Proceeds from call redemptions and maturities of marketable securities | |||||||||||
| Net cash used in investing activities | ( | ( | |||||||||
| Financing activities | |||||||||||
| Proceeds from issuance of common stock from equity plans | |||||||||||
| Purchases of shares withheld for tax obligations | ( | ( | |||||||||
| Repurchases of common stock | ( | ( | |||||||||
| Principal repayments of finance lease obligations | ( | ( | |||||||||
| Net cash used in financing activities | ( | ( | |||||||||
| Effect of exchange rate changes on cash and cash equivalents | |||||||||||
| Net increase in cash and cash equivalents | |||||||||||
| Cash and cash equivalents, beginning of period | |||||||||||
| Cash and cash equivalents, end of period | $ | $ | |||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (in thousands, except share and per share amounts) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Net income | $ | $ | $ | $ | |||||||||||||||||||
| Basic - weighted-average shares outstanding: | |||||||||||||||||||||||
| Effect of dilutive securities: | |||||||||||||||||||||||
| Employee stock options and other | |||||||||||||||||||||||
| Diluted - weighted-average shares outstanding: | |||||||||||||||||||||||
| Net income per share: | |||||||||||||||||||||||
| Basic | $ | $ | $ | $ | |||||||||||||||||||
| Diluted | $ | $ | $ | $ | |||||||||||||||||||
| September 30, 2025 | December 31, 2024 | Useful Life (in years) | Weighted Average Useful Life Remaining (in years) | ||||||||||||||||||||||||||||||||||||||||||||
| (in thousands) | Gross | Accumulated Amortization | Net | Gross | Accumulated Amortization | Net | |||||||||||||||||||||||||||||||||||||||||
| Intangible assets with finite lives: | |||||||||||||||||||||||||||||||||||||||||||||||
| Non-compete agreement | $ | $ | ( | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||||||||||||
| Software technology | ( | ( | |||||||||||||||||||||||||||||||||||||||||||||
| Software platform | ( | ( | |||||||||||||||||||||||||||||||||||||||||||||
| Total intangible assets | $ | $ | ( | $ | $ | $ | ( | $ | |||||||||||||||||||||||||||||||||||||||
| (in thousands) | Estimated Amortization Expense | ||||
| Remaining 2025 | $ | ||||
| 2026 | |||||
| 2027 | |||||
| 2028 | |||||
| 2029 | |||||
| Thereafter | |||||
| Total estimated amortization expense | $ | ||||
| September 30, 2025 | December 31, 2024 | ||||||||||||||||||||||||||||||||||
| (in thousands) | Level 1 | Level 2 | Level 3 | Level 1 | Level 2 | Level 3 | |||||||||||||||||||||||||||||
| Financial Assets: | |||||||||||||||||||||||||||||||||||
| Cash | $ | $ | $ | $ | $ | $ | |||||||||||||||||||||||||||||
| Money market mutual fund | |||||||||||||||||||||||||||||||||||
| Marketable securities | |||||||||||||||||||||||||||||||||||
| Total | $ | $ | $ | $ | $ | $ | |||||||||||||||||||||||||||||
| September 30, 2025 | |||||||||||||||||||||||
| (in thousands) | Cost | Unrealized Gains | Unrealized Losses | Fair Value | |||||||||||||||||||
| U.S. government agency securities | $ | $ | $ | ( | $ | ||||||||||||||||||
| Corporate debt securities | ( | ||||||||||||||||||||||
| U.S. municipal securities | |||||||||||||||||||||||
| U.S. treasury bonds | |||||||||||||||||||||||
| Total marketable securities | $ | $ | $ | ( | $ | ||||||||||||||||||
| December 31, 2024 | |||||||||||||||||||||||
| (in thousands) | Cost | Unrealized Gains | Unrealized Losses | Fair Value | |||||||||||||||||||
| U.S. government agency securities | $ | $ | $ | ( | $ | ||||||||||||||||||
| Corporate debt securities | ( | ||||||||||||||||||||||
| U.S. municipal securities | ( | ||||||||||||||||||||||
| U.S. treasury bonds | ( | ||||||||||||||||||||||
| Total marketable securities | $ | $ | $ | ( | $ | ||||||||||||||||||
| (in thousands) | September 30, 2025 | ||||
| Due in one year or less | $ | ||||
| Due after one year through five years | |||||
| Total marketable securities | $ | ||||
| (in thousands) | September 30, 2025 | December 31, 2024 | |||||||||
| Total inventory | $ | $ | |||||||||
| Allowance for obsolescence | ( | ( | |||||||||
| Inventory, net of allowance | $ | $ | |||||||||
| Stock Options | Weighted- Average Exercise Price | ||||||||||
| Options outstanding at December 31, 2024 | $ | ||||||||||
| Granted | |||||||||||
| Exercised | ( | ||||||||||
| Forfeited | ( | ||||||||||
| Expired | ( | ||||||||||
| Options outstanding at September 30, 2025 | $ | ||||||||||
| Exercisable at September 30, 2025 | $ | ||||||||||
| Nine Months Ended September 30, | |||||||||||
| 2025 | 2024 | ||||||||||
| Risk-free interest rate | |||||||||||
| Expected life (years) | |||||||||||
| Expected volatility | |||||||||||
| Expected dividend yield | |||||||||||
| Restricted Stock Units | Weighted- Average Grant Date Fair Value Per Share | ||||||||||
| Restricted stock units at December 31, 2024 | $ | ||||||||||
| Granted | |||||||||||
| Restrictions lapsed | ( | ||||||||||
| Forfeited | ( | ||||||||||
| Restricted stock units at September 30, 2025 | $ | ||||||||||
| Performance Stock Units | Weighted- Average Grant Date Fair Value Per Share | ||||||||||
| Performance stock units at December 31, 2024 | $ | ||||||||||
Granted1 | |||||||||||
| Restrictions lapsed | ( | ||||||||||
| Performance change | |||||||||||
| Forfeited | ( | ||||||||||
| Performance stock units at September 30, 2025 | $ | ||||||||||
1 Includes a target number of | |||||||||||
| Nine Months Ended September 30, | |||||||||||
| 2025 | 2024 | ||||||||||
| Risk-free interest rate | |||||||||||
| Expected life (years) | |||||||||||
| Expected volatility | |||||||||||
| Expected dividend yield | |||||||||||
| Nine Months Ended September 30, | |||||||||||
| 2025 | 2024 | ||||||||||
| Risk-free interest rate | |||||||||||
| Expected life (months) | |||||||||||
| Expected volatility | |||||||||||
| Expected dividend yield | |||||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (in thousands) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Balance at beginning of period | $ | ( | $ | ( | $ | ( | $ | ( | |||||||||||||||
| Foreign currency translation adjustments | |||||||||||||||||||||||
| Other comprehensive income (loss) before reclassifications | ( | ||||||||||||||||||||||
| Amounts reclassified from accumulated other comprehensive loss | |||||||||||||||||||||||
| Net current-period other comprehensive income (loss) | ( | ||||||||||||||||||||||
| Net unrealized gains on investments in securities | |||||||||||||||||||||||
| Other comprehensive income before reclassifications | |||||||||||||||||||||||
| Amounts reclassified from accumulated other comprehensive loss | |||||||||||||||||||||||
| Net current-period other comprehensive income | |||||||||||||||||||||||
| Balance at end of period | $ | ( | $ | ( | $ | ( | $ | ( | |||||||||||||||
| Three Months Ended September 30, 2025 | |||||||||||||||||||||||
| (in thousands) | |||||||||||||||||||||||
| United States | Europe | Corporate Unallocated | Total | ||||||||||||||||||||
| Revenue | $ | $ | $ | $ | |||||||||||||||||||
Segment expenses1 | |||||||||||||||||||||||
| Exit, Disposal and Goodwill impairment costs | |||||||||||||||||||||||
| Income (Loss) from Operations | $ | $ | ( | $ | ( | $ | |||||||||||||||||
| Three Months Ended September 30, 2024 | |||||||||||||||||||||||
| (in thousands) | |||||||||||||||||||||||
| United States | Europe | Corporate Unallocated | Total | ||||||||||||||||||||
| Revenue | $ | $ | $ | $ | |||||||||||||||||||
Segment expenses1 | |||||||||||||||||||||||
| Exit, Disposal and Goodwill impairment costs | |||||||||||||||||||||||
| Income (Loss) from Operations | $ | $ | ( | $ | ( | $ | |||||||||||||||||
| Nine Months Ended September 30, 2025 | |||||||||||||||||||||||
| (in thousands) | |||||||||||||||||||||||
| United States | Europe | Corporate Unallocated | Total | ||||||||||||||||||||
| Revenue | $ | $ | $ | $ | |||||||||||||||||||
Segment expenses1 | |||||||||||||||||||||||
| Exit, Disposal and Goodwill impairment costs | |||||||||||||||||||||||
| Income (Loss) from Operations | $ | $ | ( | $ | ( | $ | |||||||||||||||||
| Nine Months Ended September 30, 2024 | |||||||||||||||||||||||
| (in thousands) | |||||||||||||||||||||||
| United States | Europe | Corporate Unallocated | Total | ||||||||||||||||||||
| Revenue | $ | $ | $ | $ | |||||||||||||||||||
Segment expenses1 | |||||||||||||||||||||||
| Exit, Disposal and Goodwill impairment costs | |||||||||||||||||||||||
| Income (Loss) from Operations | $ | $ | ( | $ | ( | $ | |||||||||||||||||
| (in thousands) | September 30, 2025 | December 31, 2024 | |||||||||
| Total long-lived assets: | |||||||||||
| United States | $ | $ | |||||||||
| Europe | |||||||||||
| Total Long-lived Assets | $ | $ | |||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (in thousands) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Expenditures for additions to long-lived assets: | |||||||||||||||||||||||
| United States | $ | $ | $ | $ | |||||||||||||||||||
| Europe | |||||||||||||||||||||||
| Total expenditures for additions to long-lived assets | $ | $ | $ | $ | |||||||||||||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (in thousands) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Depreciation and Amortization: | |||||||||||||||||||||||
| United States | $ | $ | $ | $ | |||||||||||||||||||
| Europe | |||||||||||||||||||||||
| Corporate Unallocated | $ | $ | |||||||||||||||||||||
| Total depreciation and amortization | $ | $ | $ | $ | |||||||||||||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (dollars in thousands) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Revenue: | |||||||||||||||||||||||
| Injection Molding | $ | $ | $ | $ | |||||||||||||||||||
| CNC Machining | |||||||||||||||||||||||
| 3D Printing | |||||||||||||||||||||||
| Sheet Metal | |||||||||||||||||||||||
| Other Revenue | |||||||||||||||||||||||
| Total Revenue | $ | $ | $ | $ | |||||||||||||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| 2025 | 2024 | 2025 | 2024 | ||||||||||||||||||||
| Revenue (in thousands) | $ | 135,366 | $ | 125,619 | $ | 396,634 | $ | 379,140 | |||||||||||||||
| Customer contacts | 21,252 | 22,511 | 41,873 | 43,671 | |||||||||||||||||||
Revenue per customer contact1 | $6,370 | $5,580 | $9,472 | $8,682 | |||||||||||||||||||
| Three Months Ended September 30, | Change | Nine Months Ended September 30, | Change | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (dollars in thousands) | 2025 | 2024 | $ | % | 2025 | 2024 | $ | % | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Revenue | $ | 135,366 | 100.0 | $ | 125,619 | 100.0 | $ | 9,747 | 7.8 | $ | 396,634 | 100.0 | $ | 379,140 | 100.0 | $ | 17,494 | 4.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Cost of revenue | 74,073 | 54.7 | 68,389 | 54.4 | 5,684 | 8.3 | 219,869 | 55.4 | 207,897 | 54.8 | 11,972 | 5.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gross profit | 61,293 | 45.3 | 57,230 | 45.6 | 4,063 | 7.1 | 176,765 | 44.6 | 171,243 | 45.2 | 5,522 | 3.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Operating expenses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Marketing and sales | 24,574 | 18.2 | 22,619 | 18.0 | 1,955 | 8.6 | 73,054 | 18.4 | 69,070 | 18.2 | 3,984 | 5.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Research and development | 10,705 | 7.9 | 9,772 | 7.8 | 933 | 9.5 | 32,487 | 8.2 | 31,600 | 8.3 | 887 | 2.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| General and administrative | 17,163 | 12.7 | 16,259 | 12.9 | 904 | 5.6 | 52,763 | 13.3 | 49,167 | 13.0 | 3,596 | 7.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Costs related to exit and disposal activities | 41 | — | — | — | 41 | (100.0) | 151 | — | — | — | 151 | (100.0) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Total operating expenses | 52,483 | 38.8 | 48,650 | 38.7 | 3,833 | 7.9 | 158,455 | 39.9 | 149,837 | 39.5 | 8,618 | 5.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Income from operations | 8,810 | 6.5 | 8,580 | 6.8 | 230 | 2.7 | 18,310 | 4.6 | 21,406 | 5.6 | (3,096) | (14.5) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Other income, net | 1,441 | 1.1 | 1,288 | 1.0 | 153 | 11.9 | 4,600 | 1.2 | 3,548 | 0.9 | 1,052 | (29.7) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Income before income taxes | 10,251 | 7.6 | 9,868 | 7.9 | 383 | 3.9 | 22,910 | 5.8 | 24,954 | 6.6 | (2,044) | (8.2) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Provision for income taxes | 3,035 | 2.2 | 2,679 | 2.1 | 356 | 13.3 | 7,668 | 1.9 | 7,957 | 2.1 | (289) | (3.6) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Net income | $ | 7,216 | 5.3 | % | $ | 7,189 | 5.7 | % | $ | 27 | 0.4 | % | $ | 15,242 | 3.8 | % | $ | 16,997 | 4.5 | % | $ | (1,755) | (10.3) | % | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Three Months Ended September 30, | Nine Months Ended September 30, | ||||||||||||||||||||||
| (dollars in thousands) | 2025 | 2024 | 2025 | 2024 | |||||||||||||||||||
| Stock options, RSUs and PSUs | $ | 3,355 | $ | 3,906 | $ | 10,955 | $ | 11,799 | |||||||||||||||
| Employee stock purchase plan | 322 | 290 | 973 | 917 | |||||||||||||||||||
| Total stock-based compensation expense | $ | 3,677 | $ | 4,196 | $ | 11,928 | $ | 12,716 | |||||||||||||||
| Cost of revenue | $ | 439 | $ | 474 | $ | 1,323 | $ | 1,401 | |||||||||||||||
| Operating expenses: | |||||||||||||||||||||||
| Marketing and sales | 837 | 727 | 2,423 | 2,378 | |||||||||||||||||||
| Research and development | 764 | 671 | 2,124 | 2,031 | |||||||||||||||||||
| General and administrative | 1,637 | 2,324 | 6,058 | 6,906 | |||||||||||||||||||
| Total stock-based compensation expense | $ | 3,677 | $ | 4,196 | $ | 11,928 | $ | 12,716 | |||||||||||||||
| Three Months Ended September 30, | |||||||||||||||||||||||||||||||||||
| 2025 | 2024 | Change | |||||||||||||||||||||||||||||||||
| (dollars in thousands) | $ | % of Total Revenue | $ | % of Total Revenue | $ | % | |||||||||||||||||||||||||||||
| Revenue: | |||||||||||||||||||||||||||||||||||
| United States | $ | 109,361 | 80.8 | % | $ | 99,571 | 79.3 | % | $ | 9,790 | 9.8 | % | |||||||||||||||||||||||
| Europe | 26,005 | 19.2 | % | 26,048 | 20.7 | % | (43) | (0.2) | |||||||||||||||||||||||||||
| Total revenue | $ | 135,366 | 100.0 | % | $ | 125,619 | 100.0 | % | $ | 9,747 | 7.8 | % | |||||||||||||||||||||||
| Three Months Ended September 30, | |||||||||||||||||||||||||||||||||||
| 2025 | 2024 | Change | |||||||||||||||||||||||||||||||||
| (dollars in thousands) | $ | % of Total Revenue | $ | % of Total Revenue | $ | % | |||||||||||||||||||||||||||||
| Revenue: | |||||||||||||||||||||||||||||||||||
| Injection Molding | $ | 47,770 | 35.3 | % | $ | 46,831 | 37.3 | % | $ | 939 | 2.0 | % | |||||||||||||||||||||||
| CNC Machining | 63,043 | 46.6 | 53,327 | 42.4 | 9,716 | 18.2 | |||||||||||||||||||||||||||||
| 3D Printing | 20,082 | 14.8 | 21,437 | 17.1 | (1,355) | (6.3) | |||||||||||||||||||||||||||||
| Sheet Metal | 4,262 | 3.1 | 3,743 | 3.0 | 519 | 13.9 | |||||||||||||||||||||||||||||
| Other Revenue | 209 | 0.2 | 281 | 0.2 | (72) | (25.6) | |||||||||||||||||||||||||||||
| Total Revenue | $ | 135,366 | 100.0 | % | $ | 125,619 | 100.0 | % | $ | 9,747 | 7.8 | % | |||||||||||||||||||||||
| Nine Months Ended September 30, | |||||||||||||||||||||||||||||||||||
| 2025 | 2024 | Change | |||||||||||||||||||||||||||||||||
| (dollars in thousands) | $ | % of Total Revenue | $ | % of Total Revenue | $ | % | |||||||||||||||||||||||||||||
| Revenue: | |||||||||||||||||||||||||||||||||||
| United States | $ | 320,340 | 80.8 | % | $ | 299,593 | 79.0 | % | $ | 20,747 | 6.9 | % | |||||||||||||||||||||||
| Europe | 76,294 | 19.2 | % | 79,547 | 21.0 | % | (3,253) | (4.1) | |||||||||||||||||||||||||||
| Total revenue | $ | 396,634 | 100.0 | % | $ | 379,140 | 100.0 | % | $ | 17,494 | 4.6 | % | |||||||||||||||||||||||
| Nine Months Ended September 30, | |||||||||||||||||||||||||||||||||||
| 2025 | 2024 | Change | |||||||||||||||||||||||||||||||||
| (dollars in thousands) | $ | % of Total Revenue | $ | % of Total Revenue | $ | % | |||||||||||||||||||||||||||||
| Revenue: | |||||||||||||||||||||||||||||||||||
| Injection Molding | $ | 143,908 | 36.3 | % | $ | 148,574 | 39.2 | % | $ | (4,666) | (3.1) | % | |||||||||||||||||||||||
| CNC Machining | 177,831 | 44.8 | 154,498 | 40.7 | 23,333 | 15.1 | |||||||||||||||||||||||||||||
| 3D Printing | 61,491 | 15.5 | 64,300 | 17.0 | (2,809) | (4.4) | |||||||||||||||||||||||||||||
| Sheet Metal | 12,776 | 3.2 | 11,218 | 3.0 | 1,558 | 13.9 | |||||||||||||||||||||||||||||
| Other Revenue | 628 | 0.2 | 550 | 0.1 | 78 | 14.2 | |||||||||||||||||||||||||||||
| Total Revenue | $ | 396,634 | 100.0 | % | $ | 379,140 | 100.0 | % | $ | 17,494 | 4.6 | % | |||||||||||||||||||||||
| Nine Months Ended September 30, | |||||||||||
| (dollars in thousands) | 2025 | 2024 | |||||||||
| Net cash provided by operating activities | $ | 58,053 | $ | 60,535 | |||||||
| Net cash used in investing activities | (7,804) | (10,683) | |||||||||
| Net cash used in financing activities | (35,887) | (46,004) | |||||||||
| Effect of exchange rate changes on cash and cash equivalents | 989 | 235 | |||||||||
| Net increase in cash and cash equivalents | $ | 15,351 | $ | 4,083 | |||||||
| Period | Total Number of Shares Purchased | Average Price Paid per Share | Total Number of Shares Purchased as Part of Publicly Announced Plans or Programs | Maximum Dollar Value of Shares that May Yet Be Purchased Under the Plans or Programs (in thousands) | ||||||||||||||||||||||
| July 1, 2025 through July 31, 2025 | — | $ | — | — | $ | 76,035 | ||||||||||||||||||||
| August 1, 2025 through August 31, 2025 | 174,571 | $ | 49.12 | 174,571 | $ | 67,460 | ||||||||||||||||||||
| September 1, 2025 through September 30, 2025 | 83,883 | $ | 49.51 | 83,883 | $ | 63,307 | ||||||||||||||||||||
| 258,454 | $ | 49.25 | 258,454 | $ | 63,307 | |||||||||||||||||||||
| Exhibit Number | Description of Exhibit | ||||||||||
| 3.1 | |||||||||||
| 3.2 | |||||||||||
| 3.3 | |||||||||||
| 10.1 | |||||||||||
| 31.1 | |||||||||||
| 31.2 | |||||||||||
| 32.1 | |||||||||||
| 101.INS | Inline XBRL Instance Document (the Instance Document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document)* | ||||||||||
| 101.SCH | Inline XBRL Taxonomy Extension Schema Document* | ||||||||||
| 101.CAL | Inline XBRL Taxonomy Extension Calculation Linkbase Document* | ||||||||||
| 101.DEF | Inline XBRL Taxonomy Extension Definition Linkbase Document* | ||||||||||
| 101.LAB | Inline XBRL Taxonomy Extension Label Linkbase Document* | ||||||||||
| 101.PRE | Inline XBRL Taxonomy Extension Presentation Linkbase Document* | ||||||||||
| 104 | Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)* | ||||||||||
| Proto Labs, Inc. | ||||||||
Date: October 31, 2025 | /s/ Suresh Krishna | |||||||
| Suresh Krishna | ||||||||
President and Chief Executive Officer (Principal Executive Officer) | ||||||||
Date: October 31, 2025 | /s/ Daniel Schumacher | |||||||
| Daniel Schumacher | ||||||||
| Chief Financial Officer (Duly Authorized Officer, Principal Financial Officer and Principal Accounting Officer) | ||||||||
Date: October 31, 2025 | By: | /s/ Suresh Krishna | ||||||
| Suresh Krishna | ||||||||
| President and Chief Executive Officer | ||||||||
| (Principal Executive Officer) | ||||||||
Date: October 31, 2025 | By: | /s/ Daniel Schumacher | ||||||
| Daniel Schumacher | ||||||||
| Chief Financial Officer | ||||||||
| (Principal Financial Officer) | ||||||||
Date: October 31, 2025 | By: | /s/ Suresh Krishna | ||||||
| Name: | Suresh Krishna | |||||||
| Title: | President and Chief Executive Officer | |||||||
Date: October 31, 2025 | By: | /s/ Daniel Schumacher | ||||||
| Name: | Daniel Schumacher | |||||||
| Title: | Chief Financial Officer | |||||||
Consolidated Balance Sheets (Parenthetical) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Statement of Financial Position [Abstract] | ||
| Allowance for credit loss, current | $ 2,378 | $ 1,975 |
| Preferred stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
| Preferred stock, authorized (in shares) | 10,000,000 | 10,000,000 |
| Preferred stock, issued (in shares) | 0 | 0 |
| Preferred stock, outstanding (in shares) | 0 | 0 |
| Common stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
| Common stock, authorized (in shares) | 150,000,000 | 150,000,000 |
| Common stock, issued (in shares) | 23,677,746 | 24,226,088 |
| Common stock, outstanding (in shares) | 23,677,746 | 24,226,088 |
Consolidated Statements of Comprehensive Income - USD ($) $ in Thousands |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Statements of Operations: | ||||
| Revenue | $ 135,366 | $ 125,619 | $ 396,634 | $ 379,140 |
| Cost of revenue | 74,073 | 68,389 | 219,869 | 207,897 |
| Gross profit | 61,293 | 57,230 | 176,765 | 171,243 |
| Operating expenses | ||||
| Marketing and sales | 24,574 | 22,619 | 73,054 | 69,070 |
| Research and development | 10,705 | 9,772 | 32,487 | 31,600 |
| General and administrative | 17,163 | 16,259 | 52,763 | 49,167 |
| Costs related to exit and disposal activities | 41 | 0 | 151 | 0 |
| Total operating expenses | 52,483 | 48,650 | 158,455 | 149,837 |
| Income from operations | 8,810 | 8,580 | 18,310 | 21,406 |
| Other income, net | 1,441 | 1,288 | 4,600 | 3,548 |
| Income before income taxes | 10,251 | 9,868 | 22,910 | 24,954 |
| Provision for income taxes | 3,035 | 2,679 | 7,668 | 7,957 |
| Net income | $ 7,216 | $ 7,189 | $ 15,242 | $ 16,997 |
| Net income per share: | ||||
| Basic (in dollars per share) | $ 0.30 | $ 0.29 | $ 0.64 | $ 0.67 |
| Diluted (in dollars per share) | $ 0.30 | $ 0.29 | $ 0.63 | $ 0.67 |
| Shares used to compute net income per share: | ||||
| Basic (in shares) | 23,889,157 | 24,980,536 | 23,974,054 | 25,304,985 |
| Diluted (in shares) | 24,191,039 | 25,022,485 | 24,249,669 | 25,382,280 |
| Comprehensive Income (net of tax) | ||||
| Comprehensive income | $ 7,055 | $ 9,769 | $ 18,502 | $ 18,158 |
Basis of Presentation |
9 Months Ended |
|---|---|
Sep. 30, 2025 | |
| Organization, Consolidation and Presentation of Financial Statements [Abstract] | |
| Basis of Presentation | Basis of Presentation The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form 10-Q and Article 10 of Regulation S-X. In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company’s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are not necessarily indicative of results that may be expected for the fiscal year as a whole. The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company’s Annual Report on Form 10-K for the year ended December 31, 2024, as filed with the Securities and Exchange Commission (SEC) on February 21, 2025. The accompanying Consolidated Balance Sheet as of December 31, 2024 was derived from the audited Consolidated Financial Statements but does not include all disclosures required by U.S. GAAP for a full set of financial statements. This Quarterly Report on Form 10-Q should be read in conjunction with the Company’s Consolidated Financial Statements and Notes included in the Company's Annual Report on Form 10-K filed on February 21, 2025 as referenced above.
|
Recent Accounting Pronouncements |
9 Months Ended |
|---|---|
Sep. 30, 2025 | |
| Accounting Policies [Abstract] | |
| Recent Accounting Pronouncements | Recent Accounting Pronouncements The Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements. In December 2023, the Financial Accounting Standards Board (FASB) issued Accounting Standards Update (ASU) No. 2023-09, Income Taxes (Topic 740): Improvements to Income Tax Disclosures, that enhances the transparency of income tax disclosures by expanding annual disclosure requirements related to the rate reconciliation and income taxes paid. The Company is required to adopt this guidance for its annual year ending December 31, 2025. Early adoption is permitted. The Company is currently evaluating the impact of this guidance on its disclosures and believes the adoption will not have a material impact on its consolidated financial statements. In November 2024, the FASB issued ASU No. 2024-03, Income Statement - Reporting Comprehensive Income - Expense Disaggregation Disclosures (Subtopic 220-40): Disaggregation of Income Statement Expenses, which is intended to improve disclosures about a public business entity's expenses, primarily through additional disaggregation of income statement expenses. ASU 2024-03 is effective for annual periods beginning after December 15, 2026, and interim periods beginning after December 15, 2027, with early adoption permitted. The Company is currently evaluating ASU 2024-03 to determine the impact on the Company's disclosures. In July 2025, the FASB issued ASU No. 2025-05, Financial Instruments - Credit Losses (Topic 326): Measurement of Credit Losses for Accounts Receivables and Contract Assets, which introduces a practical expedient for the application of the current expected credit loss model to current accounts receivables and contract assets. ASU 2025-05 is effective for annual and interim periods beginning after December 15, 2025, with early adoption permitted. The Company is currently evaluating ASU 2025-05 to determine the impact on the Company's financial statements and disclosures. In September 2025, the FASB issued ASU No. 2025-06, Intangibles - Goodwill and Other - Internal-Use Software (Subtopic 350-40): Targeted Improvements to the Accounting for Internal-Use Software, which updates the cost capitalization threshold for internal-use software development costs by removing all references to software project development stages and provides new guidance on how to evaluate whether the probable-to-complete recognition threshold has been met. ASU 2025-06 is effective for annual and interim periods beginning after December 15, 2027, with early adoption permitted. The Company is currently evaluating ASU 2025-06 to determine the impact on the Company's financial statements and disclosures.
|
Net Income per Common Share |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Earnings Per Share [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Net Income per Common Share | Net Income per Common Share Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied. Anti-dilutive options were excluded from the calculation of diluted weighted average shares outstanding and were 214,801 and 466,127 for the three months ended September 30, 2025 and 2024, respectively, and 380,740 and 450,275 for the nine months ended September 30, 2025 and 2024, respectively. The table below sets forth the computation of basic and diluted net income per share:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Goodwill and Other Intangible Assets |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Goodwill and Intangible Assets Disclosure [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Goodwill and Other Intangible Assets | Goodwill and Other Intangible Assets There were no changes in the carrying amount of goodwill during the three and nine months ended September 30, 2025. Intangible assets other than goodwill at September 30, 2025 and December 31, 2024 were as follows:
Intangible assets allocated to the Protolabs Network entities consisted of intangible assets of €11.6 million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency unrealized losses related to intangible assets were $0.5 million and $2.2 million as of September 30, 2025 and December 31, 2024, respectively. Amortization expense for intangible assets was $0.9 million for each of the three months ended September 30, 2025 and 2024, and $2.8 million for each of the nine months ended September 30, 2025 and 2024. Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fair Value Measurements |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fair Value Disclosures [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fair Value Measurements | Fair Value Measurements Accounting Standards Codification, Fair Value Measurement (ASC 820), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC 820 also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are three levels of inputs that may be used to measure fair value: Level 1—Quoted prices in active markets for identical assets or liabilities. Level 2—Observable inputs other than Level 1 prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are not active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities. Level 3—Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities. The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents and marketable securities. The Company’s cash consists of bank deposits and cash equivalents consist primarily of money market mutual funds. The Company determines the fair value of these investments using Level 1 inputs. The Company's marketable securities consist of short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2). The following table summarizes financial assets as of September 30, 2025 and December 31, 2024 measured at fair value on a recurring basis:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Marketable Securities |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Investments, Debt and Equity Securities [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Marketable Securities | Marketable Securities The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as available-for-sale and are recorded at fair value. The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of September 30, 2025 and December 31, 2024:
Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2). Classification of marketable securities as current or non-current is based upon the security’s maturity date as of the date of these financial statements. The September 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may differ from contractual maturities because the issuers of the securities may have the right to prepay obligations without prepayment penalties.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Inventory |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Inventory Disclosure [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Inventory | Inventory Inventory consists primarily of raw materials, which are recorded at the lower of cost and net realizable value using the standard cost method, which approximates first-in, first-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts. The Company’s inventory consisted of the following as of the dates indicated:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stock-Based Compensation |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Share-Based Payment Arrangement [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Stock-Based Compensation | Stock-Based Compensation On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan, which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022, and subsequently amended and restated by the Company's shareholders at the Annual Meeting of Shareholders on May 23, 2024 (as amended and restated, and subsequently further amended, the 2022 Plan) to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 430,000 shares, add a minimum vesting requirement, and extend the expiration date so that the term of the 2022 Plan runs for ten years from the date of the shareholder approval. On May 20, 2025, the Company's shareholders approved an amendment to the 2022 Plan to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 296,000 shares. Under the 2022 Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2022 Plan have a maximum term of ten years from the date of grant. The compensation and talent committee may provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation and talent committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the 2022 Plan generally may not be less than the fair market value of a share of our common stock on the date of the grant. The Company also has outstanding awards under the 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), although the plan expired in February 2022 and no additional awards have since been or will be made under the 2012 Plan. The 2012 Plan provided the Company the ability to grant stock options, SARs, restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2012 Plan that subsequently expired, were forfeited or cancelled, or settled in cash after August 29, 2022 became available for awards under the 2022 Plan. On May 23, 2025, the Company granted one-time inducement awards (the Inducement Awards) within the meaning of the New York Stock Exchange Listed Company Manual Section 303A.08 to the Company's incoming Chief Executive Officer. The Inducement Awards were not granted under the 2022 Plan, but have the same terms and conditions as equity awards granted under the 2022 Plan, except as otherwise provided in the award agreements. Employee Stock Purchase Plan The Company’s 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company’s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period ending May 15 and November 15, respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company’s common stock on the first trading day of the offering period or on the last trading day of the offering period. Stock-Based Compensation Expense Stock-based compensation expense was $3.7 million and $4.2 million for the three months ended September 30, 2025 and 2024, respectively, and $11.9 million and $12.7 million for the nine months ended September 30, 2025 and 2024, respectively. Stock Options The following table summarizes stock option activity during the nine months ended September 30, 2025:
The outstanding options generally have a term of ten years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period of four years, beginning on the first anniversary of the grant date, subject to the employee’s continuing service to the Company. The weighted-average grant date fair value of options that were granted during the nine months ended September 30, 2025 was $21.81. The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the nine months ended September 30, 2025 and 2024:
As of September 30, 2025, there was $3.3 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 2.9 years. Restricted Stock Units Restricted stock unit (RSU) awards are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from to four years, beginning on the first anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the first anniversary of the grant date. The following table summarizes restricted stock units activity during the nine months ended September 30, 2025:
As of September 30, 2025, there was $18.8 million of unrecognized compensation expense related to non-vested restricted stock units, which is expected to be recognized over a weighted-average period of 2.7 years. Performance Stock Units Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 percent and 200 percent of that target number capable of being earned and vesting at the end of a three-year performance period depending on the Company’s three-year cumulative total shareholder return performance relative to an index and the award recipient’s continued employment. The Company’s PSUs are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model. The following table summarizes performance stock units activity during the nine months ended September 30, 2025:
The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the nine months ended September 30, 2025 and 2024:
As of September 30, 2025, there was $7.5 million of unrecognized compensation expense related to non-vested performance stock units, which is expected to be recognized over a weighted-average period of 2.1 years. Employee Stock Purchase Plan The following table presents the assumptions used to estimate the fair value of the ESPP during the nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Accumulated Other Comprehensive Income (Loss) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Regulated Operations [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Accumulated Other Comprehensive Income (Loss) | Accumulated Other Comprehensive Income (Loss) Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities. The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Income Taxes |
9 Months Ended |
|---|---|
Sep. 30, 2025 | |
| Income Tax Disclosure [Abstract] | |
| Income Taxes | Income Taxes The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the three months ended September 30, 2025 and 2024, the Company recorded an income tax provision of $3.0 million and $2.7 million, respectively. For the nine months ended September 30, 2025 and 2024, the Company recorded an income tax provision of $7.7 million and $8.0 million, respectively. The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The effective income tax rate for the three months ended September 30, 2025 was 29.6 percent compared to 27.1 percent in the same period of the prior year. The effective tax rate increased by 2.5 percent for the three months ended September 30, 2025 when compared to the same period in 2024, primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances. The effective income tax rate for the nine months ended September 30, 2025 was 33.5 percent compared to 31.9 percent in the same period of the prior year. The effective tax rate increased by 1.6 percent for the nine months ended September 30, 2025 when compared to the same period in 2024, primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances. The effective income tax rate for the three and nine months ended September 30, 2025 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions partially offset by tax credits for which the Company qualifies. The Company had unrecognized tax benefits totaling $3.7 million as of September 30, 2025 and $3.4 million as of December 31, 2024, respectively, that if recognized would result in a reduction of the Company’s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate. On July 4, 2025, the U.S. enacted H.R. 1 "A bill to provide for reconciliation pursuant to Title II of H. Con. Res. 14", commonly referred to as the One Big Beautiful Bill Act (OBBBA). As a result of the enactment of H.R. 1, the impact to the deferred tax liability and the income tax payable related to the provisions for 100% bonus depreciation for assets placed in service after January 19, 2025 and full expensing of domestic research and experimental expenditures was recorded in the period ended September 30, 2025. We do not expect any material change to our ongoing tax rate as a result of this legislation. We continue to evaluate the impacts the new legislation may have on the Company's financial statements.
|
Segment Reporting |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Segment Reporting [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Segment Reporting | Segment Reporting The Company’s reportable segments are based on the internal reporting used by the Company’s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company’s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does not allocate directly to its operating segments. Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are not allocated to business segments. The following table summarizes selected financial information by reportable segments:
1 Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs. Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:
Revenue by product line the three and nine months ended September 30, 2025 and 2024 were as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subsequent Event |
9 Months Ended |
|---|---|
Sep. 30, 2025 | |
| Subsequent Events [Abstract] | |
| Subsequent Event | Subsequent Event On October 3, 2025 (the Notice Date), the Company announced that Oleg Ryaboy, Chief Technology Officer, will depart the Company and cease to be an employee, effective November 2, 2025. As of the Notice Date, Mr. Ryaboy is no longer the Company’s Chief Technology Officer or an executive officer of the Company. Marc Kermisch has been appointed to serve as the Company’s new Chief Technology & AI Officer, effective October 13, 2025.
|
Insider Trading Arrangements |
3 Months Ended |
|---|---|
|
Sep. 30, 2025
shares
| |
| Trading Arrangements, by Individual | |
| Non-Rule 10b5-1 Arrangement Adopted | false |
| Rule 10b5-1 Arrangement Terminated | false |
| Non-Rule 10b5-1 Arrangement Terminated | false |
| Michael R. Kenison [Member] | |
| Trading Arrangements, by Individual | |
| Material Terms of Trading Arrangement | On August 15, 2025, Michael R. Kenison, Chief Operations Officer of the Company, entered into a 10b5-1 sales plan intended to satisfy the affirmative defense of Rule 10b5-1(c) under the Exchange Act. This 10b5-1 sales plan provides for (1) the sale of up to 10,681 shares of common stock related to the exercise of option awards granted to Mr. Kenison and (2) the sale of up to 7,500 shares of common stock related to vested restricted stock units granted to Mr. Kenison. This 10b5-1 sales plan will become effective on November 14, 2025 and will expire on June 12, 2026, or earlier completion of all authorized transactions under the plan. |
| Name | Michael R. Kenison |
| Title | Chief Operations Officer |
| Rule 10b5-1 Arrangement Adopted | true |
| Adoption Date | August 15, 2025 |
| Expiration Date | June 12, 2026 |
| Arrangement Duration | 210 days |
| Oleg Ryaboy [Member] | |
| Trading Arrangements, by Individual | |
| Material Terms of Trading Arrangement | On September 8, 2025, Oleg Ryaboy, Chief Technology Officer of the Company until October 3, 2025, entered into a 10b5-1 sales plan intended to satisfy the affirmative defense of Rule 10b5-1(c) under the Exchange Act. This 10b5-1 sales plan provides for (1) the sale of up to 3,048 shares of common stock related to the exercise of option awards granted to Mr. Ryaboy, (2) the sale of up to 4,200 shares of common stock related to vested restricted stock units granted to Mr. Ryaboy and (3) the sale of shares of common stock related to the future vesting of up to 5,658 restricted stock units held by Mr. Ryaboy. The exact number of shares of common stock that will be sold under this 10b5-1 sales plan related to vesting of restricted stock units is not yet determinable because an unknown number of shares will be sold to satisfy tax withholding obligations in connection with the vesting of the restricted stock units covered by the plan. This 10b5-1 sales plan will become effective on December 8, 2025 and will expire on August 15, 2026, or earlier completion of all authorized transactions under the plan. |
| Name | Oleg Ryaboy |
| Title | Chief Technology Officer |
| Rule 10b5-1 Arrangement Adopted | true |
| Adoption Date | September 8, 2025 |
| Expiration Date | August 15, 2026 |
| Arrangement Duration | 250 days |
| Michael R. Kenison, Trading Arrangement, Common Stock Related To Option Awards Granted [Member] | Michael R. Kenison [Member] | |
| Trading Arrangements, by Individual | |
| Aggregate Available | 10,681 |
| Michael R. Kenison, Trading Arrangement, Common Stock Related To Restricted Stock Units Granted [Member] | Michael R. Kenison [Member] | |
| Trading Arrangements, by Individual | |
| Aggregate Available | 7,500 |
| Oleg Ryaboy, Trading Arrangement, Common Stock Related To Option Awards [Member] | Oleg Ryaboy [Member] | |
| Trading Arrangements, by Individual | |
| Aggregate Available | 3,048 |
| Oleg Ryaboy, Trading Arrangement, Common Stock Related To Vested Restricted Stock Units [Member] | Oleg Ryaboy [Member] | |
| Trading Arrangements, by Individual | |
| Aggregate Available | 4,200 |
| Oleg Ryaboy, Trading Arrangement, Common Stock Related To Unvested Restricted Stock Units [Member] | Oleg Ryaboy [Member] | |
| Trading Arrangements, by Individual | |
| Aggregate Available | 5,658 |
Net Income per Common Share (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Earnings Per Share [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Computation Of Basic and Diluted Net Income Per Share | The table below sets forth the computation of basic and diluted net income per share:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Goodwill and Other Intangible Assets (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Goodwill and Intangible Assets Disclosure [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Intangible Assets Other Than Goodwill | Intangible assets other than goodwill at September 30, 2025 and December 31, 2024 were as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Aggregated Amortization Expense | Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fair Value Measurements (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fair Value Disclosures [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Fair Value, Assets Measured on Recurring Basis | The following table summarizes financial assets as of September 30, 2025 and December 31, 2024 measured at fair value on a recurring basis:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Marketable Securities (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Investments, Debt and Equity Securities [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Short-Term and Long-Term Marketable Securities | The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of September 30, 2025 and December 31, 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Available-For-Sale Debt Securities by Contractual Maturity | The September 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may differ from contractual maturities because the issuers of the securities may have the right to prepay obligations without prepayment penalties.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Inventory (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Inventory Disclosure [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Inventory | The Company’s inventory consisted of the following as of the dates indicated:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stock-Based Compensation (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Share-Based Payment Arrangement [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Share-Based Payment Arrangement, Option, Activity | The following table summarizes stock option activity during the nine months ended September 30, 2025:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions | The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity | The following table summarizes restricted stock units activity during the nine months ended September 30, 2025:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Nonvested Performance-Based Units Activity | The following table summarizes performance stock units activity during the nine months ended September 30, 2025:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions | The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions | The following table presents the assumptions used to estimate the fair value of the ESPP during the nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Accumulated Other Comprehensive Income (Loss) (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Regulated Operations [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Comprehensive Income (Loss) | The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and nine months ended September 30, 2025 and 2024:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Segment Reporting (Tables) |
9 Months Ended | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Segment Reporting [Abstract] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Segment Reporting Information, by Segment | The following table summarizes selected financial information by reportable segments:
1 Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Long-Lived Assets by Geographic Areas | Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Expenditures for Additions to Long-lived Assets by Geographic Region |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Depreciation and Amortization by Geographic Region |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Schedule of Disaggregation of Revenue | Revenue by product line the three and nine months ended September 30, 2025 and 2024 were as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Net Income per Common Share - Narrative (Details) - shares |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Earnings Per Share [Abstract] | ||||
| Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) | 214,801 | 466,127 | 380,740 | 450,275 |
Net Income per Common Share - Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) - USD ($) $ / shares in Units, $ in Thousands |
3 Months Ended | 9 Months Ended | ||||||
|---|---|---|---|---|---|---|---|---|
Sep. 30, 2025 |
Jun. 30, 2025 |
Mar. 31, 2025 |
Sep. 30, 2024 |
Jun. 30, 2024 |
Mar. 31, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Earnings Per Share [Abstract] | ||||||||
| Net income | $ 7,216 | $ 4,427 | $ 3,599 | $ 7,189 | $ 4,540 | $ 5,268 | $ 15,242 | $ 16,997 |
| Basic - weighted-average shares outstanding (in shares) | 23,889,157 | 24,980,536 | 23,974,054 | 25,304,985 | ||||
| Effect of dilutive securities: | ||||||||
| Employee stock options and other (in shares) | 301,882 | 41,949 | 275,615 | 77,295 | ||||
| Diluted - weighted-average shares outstanding (in shares) | 24,191,039 | 25,022,485 | 24,249,669 | 25,382,280 | ||||
| Net income per share: | ||||||||
| Basic (in dollars per share) | $ 0.30 | $ 0.29 | $ 0.64 | $ 0.67 | ||||
| Diluted (in dollars per share) | $ 0.30 | $ 0.29 | $ 0.63 | $ 0.67 | ||||
Goodwill and Other Intangible Assets - Narrative (Details) € in Millions |
3 Months Ended | 9 Months Ended | 12 Months Ended | ||||
|---|---|---|---|---|---|---|---|
|
Jan. 22, 2021
USD ($)
|
Jan. 22, 2021
EUR (€)
|
Sep. 30, 2025
USD ($)
|
Sep. 30, 2024
USD ($)
|
Sep. 30, 2025
USD ($)
|
Sep. 30, 2024
USD ($)
|
Dec. 31, 2024
USD ($)
|
|
| Intangible Asset, Acquired, Finite-Lived [Line Items] | |||||||
| Goodwill, period increase (decrease) | $ 0 | $ 0 | |||||
| Foreign currency losses | 500,000 | $ 2,200,000 | |||||
| Amortization expense for intangible assets | $ 900,000 | $ 900,000 | $ 2,800,000 | $ 2,800,000 | |||
| Europe | 3D Hubs, Inc. (Hubs) | |||||||
| Intangible Asset, Acquired, Finite-Lived [Line Items] | |||||||
| Intangible assets acquired | € | € 11.6 | ||||||
| United States | 3D Hubs, Inc. (Hubs) | |||||||
| Intangible Asset, Acquired, Finite-Lived [Line Items] | |||||||
| Intangible assets acquired | $ 16,600,000 | ||||||
Goodwill and Other Intangible Assets - Schedule of Aggregated Amortization Expense (Details) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract] | ||
| Remaining 2025 | $ 929 | |
| 2026 | 3,618 | |
| 2027 | 3,609 | |
| 2028 | 2,240 | |
| 2029 | 2,240 | |
| Thereafter | 6,903 | |
| Net | $ 19,539 | $ 21,422 |
Marketable Securities - Schedule of Short-Term and Long-Term Marketable Securities (Details) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Debt Securities, Available-for-Sale [Line Items] | ||
| Cost | $ 33,927 | $ 31,937 |
| Unrealized Gains | 57 | 0 |
| Unrealized Losses | (18) | (145) |
| Fair Value | 33,966 | 31,792 |
| U.S. government agency securities | ||
| Debt Securities, Available-for-Sale [Line Items] | ||
| Cost | 8,000 | 8,323 |
| Unrealized Gains | 9 | 0 |
| Unrealized Losses | (4) | (22) |
| Fair Value | 8,005 | 8,301 |
| Corporate debt securities | ||
| Debt Securities, Available-for-Sale [Line Items] | ||
| Cost | 15,947 | 15,852 |
| Unrealized Gains | 10 | 0 |
| Unrealized Losses | (14) | (82) |
| Fair Value | 15,943 | 15,770 |
| U.S. municipal securities | ||
| Debt Securities, Available-for-Sale [Line Items] | ||
| Cost | 8,980 | 6,762 |
| Unrealized Gains | 34 | 0 |
| Unrealized Losses | 0 | (38) |
| Fair Value | 9,014 | 6,724 |
| U.S. treasury bonds | ||
| Debt Securities, Available-for-Sale [Line Items] | ||
| Cost | 1,000 | 1,000 |
| Unrealized Gains | 4 | 0 |
| Unrealized Losses | 0 | (3) |
| Fair Value | $ 1,004 | $ 997 |
Marketable Securities - Schedule of Available-For-Sale Debt Securities by Contractual Maturity (Details) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract] | ||
| Due in one year or less | $ 14,817 | |
| Due after one year through five years | 19,149 | |
| Total marketable securities | $ 33,966 | $ 31,792 |
Inventory (Details) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Inventory Disclosure [Abstract] | ||
| Total inventory | $ 14,755 | $ 12,989 |
| Allowance for obsolescence | (682) | (684) |
| Inventory, net of allowance | $ 14,073 | $ 12,305 |
Stock-Based Compensation - Option Activity (Details) |
9 Months Ended |
|---|---|
|
Sep. 30, 2025
$ / shares
shares
| |
| Stock Options | |
| Options outstanding, beginning balance (in shares) | shares | 445,136 |
| Granted (in shares) | shares | 139,872 |
| Exercised (in shares) | shares | (70,307) |
| Forfeited (in shares) | shares | (103,013) |
| Expired (in shares) | shares | (16,354) |
| Options outstanding, ending balance (in shares) | shares | 395,334 |
| Option exercisable (in shares) | shares | 191,882 |
| Weighted- Average Exercise Price | |
| Options outstanding, beginning balance (in dollars per share) | $ / shares | $ 51.34 |
| Granted (in dollars per share) | $ / shares | 39.32 |
| Exercised (in dollars per share) | $ / shares | 34.27 |
| Forfeited (in dollars per share) | $ / shares | 37.68 |
| Expired (in dollars per share) | $ / shares | 87.74 |
| Options outstanding, ending balance (in dollars per share) | $ / shares | 52.18 |
| Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares | $ 68.62 |
Income Taxes (Details) - USD ($) $ in Thousands |
3 Months Ended | 9 Months Ended | |||
|---|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
Dec. 31, 2024 |
|
| Income Tax Disclosure [Abstract] | |||||
| Provision for income taxes | $ 3,035 | $ 2,679 | $ 7,668 | $ 7,957 | |
| Effective income tax rate (in percent) | 29.60% | 27.10% | 33.50% | 31.90% | |
| Effective income tax rate, increase during period (in percent) | 2.50% | 1.60% | |||
| Federal statutory rate (in percent) | 21.00% | 21.00% | |||
| Unrecognized tax benefits | $ 3,700 | $ 3,700 | $ 3,400 | ||
Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details) - USD ($) $ in Thousands |
Sep. 30, 2025 |
Dec. 31, 2024 |
|---|---|---|
| Segment Reporting Information [Line Items] | ||
| Total Long-lived Assets | $ 211,325 | $ 227,263 |
| United States | ||
| Segment Reporting Information [Line Items] | ||
| Total Long-lived Assets | 168,988 | 181,291 |
| Europe | ||
| Segment Reporting Information [Line Items] | ||
| Total Long-lived Assets | $ 42,337 | $ 45,972 |
Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details) - USD ($) $ in Thousands |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Segment Reporting Information [Line Items] | ||||
| Total expenditures for additions to long-lived assets | $ 4,062 | $ 1,555 | $ 6,792 | $ 8,339 |
| United States | ||||
| Segment Reporting Information [Line Items] | ||||
| Total expenditures for additions to long-lived assets | 3,636 | 1,368 | 5,929 | 5,734 |
| Europe | ||||
| Segment Reporting Information [Line Items] | ||||
| Total expenditures for additions to long-lived assets | $ 426 | $ 187 | $ 863 | $ 2,605 |
Segment Reporting - Schedule of Depreciation and Amortization (Details) - USD ($) $ in Thousands |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Segment Reporting Information [Line Items] | ||||
| Total depreciation and amortization | $ 8,429 | $ 8,909 | $ 25,693 | $ 26,984 |
| United States | ||||
| Segment Reporting Information [Line Items] | ||||
| Total depreciation and amortization | 6,904 | 7,156 | 20,916 | 21,667 |
| Europe | ||||
| Segment Reporting Information [Line Items] | ||||
| Total depreciation and amortization | 1,470 | 1,718 | 4,560 | 5,194 |
| Corporate Unallocated | ||||
| Segment Reporting Information [Line Items] | ||||
| Total depreciation and amortization | $ 55 | $ 35 | $ 217 | $ 123 |
Segment Reporting - Schedule of Disaggregation of Revenue (Details) - USD ($) $ in Thousands |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 30, 2025 |
Sep. 30, 2024 |
Sep. 30, 2025 |
Sep. 30, 2024 |
|
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | $ 135,366 | $ 125,619 | $ 396,634 | $ 379,140 |
| Injection Molding | ||||
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | 47,770 | 46,831 | 143,908 | 148,574 |
| CNC Machining | ||||
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | 63,043 | 53,327 | 177,831 | 154,498 |
| 3D Printing | ||||
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | 20,082 | 21,437 | 61,491 | 64,300 |
| Sheet Metal | ||||
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | 4,262 | 3,743 | 12,776 | 11,218 |
| Other Revenue | ||||
| Segment Reporting Information [Line Items] | ||||
| Total Revenue | $ 209 | $ 281 | $ 628 | $ 550 |
P84H3'YU'0?YY%?\_376.Z%K)^]_C>_0^->>W\]*TG
M>!)RSRY]_+JW"SRZT/*N? >]_@]ZZW$N1N*XCTDZ%#"\%47&ZN7SQ[6G%GC)
MQ2P,\1N^N9%M>?] 5GCI.U^Q*NQQ"=Q^[6&(GCGXD_X3?LJD[UC+,6B]H2AA
M%![^^KD"7K[_&_XD6KQ![PV!^E6]X!9?'CCKKS!ZP[_*A[_@'#_=(6_PK,=U
MJHW=5^3TQY8'RC)]F]D;D@^*O5"2YJ],A>KL?F*%Z M6P\Y%\#1%?D0TPWF(
M%<4C@N%\>5M> ADRVS4VU%S>><&.R> E^.[75: TNU*WI#O23=*NK1V2)671&@OK;B]!/'2S;L
M 45*#DG@[FEK*_VJ1+C!>/UAJ7Y[#;X^8W*O],#J+"/<6%?3QOJX-^ET]:'3
M'0['P^Y8-T;&T)@,M=ZH/_H_!#K<>'6DKP!RX*V^.WD^?1S\ FRMA.+DS=#E7&7BW3G;@V=N=@7U 6\(@4=/@M\GWDW6;%T_K:\"J\(/A(R#L7*TZ%CWE0+
M/ITKP)>9,H'7.QS9>P&7E:$?\PJ[MH) D[!3&8PG3F6T0N>5UV=0&,H8TWLW
MU<^^)/ -O;-RF"W\EW T"$>COKK]!^(G3S#7\)Z;AWEJ+Z(4WED(IX=*BT,*
M+4NMT%:/*V.(1>$82V,NT)\=1.Z9(XJBGZ&:I@.*2N/EJ2 BU-*X"-K$$8Z%
M6\4!^5)LY"(: ,<6%%>7/E 2$<*E)
M1!]R&5#[*1(F;^@
?,0V]X@\W];*/SQ)Z>#-!MTQC.D+RY.LK%
M6]10/B8P.*L8/5E?]R(SY[!LVHTN6>=UWAV]EC[65M5Q!.("?ZWJ9:X[EE2'
MT!Q_@&Y(=;5'7\0 4E7GWGCW\LU-5=KJU^8ZC6?CA/5:J\CY@[Y
4&4A"PJWT+V="$#L)%@G.+T,QQM^6X21U/X
M<,HGYN!@,Y$WLZG/U9KL&3%^Q5MERZFY&XV SWE"WG<0][$3CB/E;3!V)Z#7
M<$5JGOS6_,SX8+
_B]#,<;#DXFP^FE'9Y*:I3'<,50\H5
MPUVL""8
*7^R/5<1^0X?1"3
M^9[-9>G'5:RK=3:D9#6G%0^?)QZ\M0I7
/Q[
M$(P?L?X%RR3<<"9JOJ.8&D?6<_]X?7>VL[_#ILP_!S$60&3)?GEM-[8%^-UQ
M_2_^/T(W9N^"1__.'V=T^)B3 7]7(^ZB=V7KAD5=UX[M*1Z+Z