2020 Form 10-K Financial Statement
#000117184321001724 Filed on March 12, 2021
Income Statement
Concept | 2020 | 2019 Q4 | 2019 Q3 |
---|---|---|---|
Revenue | $179.4M | $50.26M | $49.39M |
YoY Change | -9.58% | -0.86% | 3.32% |
Cost Of Revenue | $134.7M | $36.49M | $36.07M |
YoY Change | -6.74% | -3.95% | 1.97% |
Gross Profit | $44.68M | $13.77M | $13.32M |
YoY Change | -17.19% | 8.37% | 7.16% |
Gross Profit Margin | 24.91% | 27.4% | 26.97% |
Selling, General & Admin | $27.49M | $7.030M | $7.183M |
YoY Change | -6.01% | -2.5% | 9.82% |
% of Gross Profit | 61.53% | 51.05% | 53.92% |
Research & Development | $8.200M | ||
YoY Change | -6.82% | ||
% of Gross Profit | 18.35% | ||
Depreciation & Amortization | $8.268M | $2.050M | $2.070M |
YoY Change | 1.17% | 1.99% | 6.15% |
% of Gross Profit | 18.5% | 14.89% | 15.54% |
Operating Expenses | $35.69M | $7.030M | $7.183M |
YoY Change | -6.2% | -2.5% | 9.82% |
Operating Profit | $16.73M | $6.740M | $6.138M |
YoY Change | -32.28% | 22.63% | 4.3% |
Interest Expense | $83.00K | -$80.00K | $165.0K |
YoY Change | -87.69% | -72.41% | -53.52% |
% of Operating Profit | 0.5% | -1.19% | 2.69% |
Other Income/Expense, Net | -$366.0K | $70.00K | -$24.00K |
YoY Change | -5.67% | -200.0% | -128.24% |
Pretax Income | $16.28M | $6.740M | $5.949M |
YoY Change | -31.14% | 31.13% | 5.72% |
Income Tax | $2.914M | $960.0K | $308.0K |
% Of Pretax Income | 17.9% | 14.24% | 5.18% |
Net Earnings | $13.37M | $5.780M | $5.641M |
YoY Change | -32.31% | 31.07% | 36.45% |
Net Earnings / Revenue | 7.45% | 11.5% | 11.42% |
Basic Earnings Per Share | $1.79 | $0.78 | $0.76 |
Diluted Earnings Per Share | $1.77 | $0.77 | $0.75 |
COMMON SHARES | |||
Basic Shares Outstanding | 7.484M | 7.432M | |
Diluted Shares Outstanding | 7.568M | 7.493M |
Balance Sheet
Concept | 2020 | 2019 Q4 | 2019 Q3 |
---|---|---|---|
SHORT-TERM ASSETS | |||
Cash & Short-Term Investments | $24.20M | $3.700M | $11.40M |
YoY Change | 554.05% | 15.63% | 123.53% |
Cash & Equivalents | $24.20M | $3.743M | $11.39M |
Short-Term Investments | |||
Other Short-Term Assets | $2.600M | $2.300M | $2.700M |
YoY Change | 13.04% | 4.55% | 22.73% |
Inventory | $18.60M | $18.28M | $19.22M |
Prepaid Expenses | $2.304M | $2.659M | |
Receivables | $26.40M | $28.65M | $28.80M |
Other Receivables | $0.00 | $300.0K | $2.000M |
Total Short-Term Assets | $71.90M | $53.25M | $64.10M |
YoY Change | 34.9% | -4.27% | 9.91% |
LONG-TERM ASSETS | |||
Property, Plant & Equipment | $55.90M | $56.74M | $57.08M |
YoY Change | -6.52% | -1.61% | -2.36% |
Goodwill | $51.84M | $51.84M | |
YoY Change | 0.0% | 0.0% | |
Intangibles | $20.98M | $21.29M | |
YoY Change | -5.65% | -5.58% | |
Long-Term Investments | |||
YoY Change | |||
Other Assets | $3.900M | $147.0K | $140.0K |
YoY Change | 34.48% | -26.87% | -49.09% |
Total Long-Term Assets | $131.3M | $135.5M | $136.2M |
YoY Change | -3.1% | 1.15% | 0.59% |
TOTAL ASSETS | |||
Total Short-Term Assets | $71.90M | $53.25M | $64.10M |
Total Long-Term Assets | $131.3M | $135.5M | $136.2M |
Total Assets | $203.2M | $188.8M | $200.3M |
YoY Change | 7.63% | -0.44% | 3.39% |
SHORT-TERM LIABILITIES | |||
YoY Change | |||
Accounts Payable | $4.100M | $4.577M | $6.825M |
YoY Change | -10.87% | -33.05% | -14.37% |
Accrued Expenses | $9.100M | $8.483M | $8.326M |
YoY Change | -5.21% | 0.3% | 26.75% |
Deferred Revenue | $2.574M | $2.532M | |
YoY Change | 2.67% | -35.38% | |
Short-Term Debt | $0.00 | $0.00 | $0.00 |
YoY Change | |||
Long-Term Debt Due | $0.00 | $2.857M | |
YoY Change | 0.0% | ||
Total Short-Term Liabilities | $15.10M | $16.78M | $21.36M |
YoY Change | -10.12% | -18.75% | 0.22% |
LONG-TERM LIABILITIES | |||
Long-Term Debt | $100.0K | $12.14M | |
YoY Change | -60.83% | ||
Other Long-Term Liabilities | $6.000M | $334.0K | $410.0K |
YoY Change | 17.65% | 1291.67% | 530.77% |
Total Long-Term Liabilities | $6.100M | $334.0K | $12.55M |
YoY Change | 19.61% | -98.5% | -59.59% |
TOTAL LIABILITIES | |||
Total Short-Term Liabilities | $15.10M | $16.78M | $21.36M |
Total Long-Term Liabilities | $6.100M | $334.0K | $12.55M |
Total Liabilities | $26.30M | $26.77M | $44.45M |
YoY Change | -1.87% | -45.53% | -23.31% |
SHAREHOLDERS EQUITY | |||
Retained Earnings | $131.6M | $125.8M | |
YoY Change | 17.67% | 17.12% | |
Common Stock | $74.00K | $74.00K | |
YoY Change | 0.0% | 0.0% | |
Preferred Stock | |||
YoY Change | |||
Treasury Stock (at cost) | $587.0K | $587.0K | |
YoY Change | 0.0% | 0.0% | |
Treasury Stock Shares | $29.56K | $29.56K | |
Shareholders Equity | $176.9M | $162.0M | $155.9M |
YoY Change | |||
Total Liabilities & Shareholders Equity | $203.2M | $188.8M | $200.3M |
YoY Change | 7.63% | -0.44% | 3.39% |
Cashflow Statement
Concept | 2020 | 2019 Q4 | 2019 Q3 |
---|---|---|---|
OPERATING ACTIVITIES | |||
Net Income | $13.37M | $5.780M | $5.641M |
YoY Change | -32.31% | 31.07% | 36.45% |
Depreciation, Depletion And Amortization | $8.268M | $2.050M | $2.070M |
YoY Change | 1.17% | 1.99% | 6.15% |
Cash From Operating Activities | $25.04M | $8.840M | $10.03M |
YoY Change | -19.83% | 13.77% | 64.43% |
INVESTING ACTIVITIES | |||
Capital Expenditures | $4.368M | -$1.400M | -$1.560M |
YoY Change | -24.4% | 53.85% | 1.96% |
Acquisitions | $0.00 | ||
YoY Change | |||
Other Investing Activities | $110.0K | $0.00 | $0.00 |
YoY Change | -100.0% | ||
Cash From Investing Activities | -$4.261M | -$1.390M | -$1.560M |
YoY Change | -26.2% | 52.75% | 2.63% |
FINANCING ACTIVITIES | |||
Cash Dividend Paid | |||
YoY Change | |||
Common Stock Issuance & Retirement, Net | |||
YoY Change | |||
Debt Paid & Issued, Net | $0.00 | ||
YoY Change | -100.0% | ||
Cash From Financing Activities | -$285.0K | -15.10M | -2.300M |
YoY Change | -98.86% | 73.36% | -57.49% |
NET CHANGE | |||
Cash From Operating Activities | $25.04M | 8.840M | 10.03M |
Cash From Investing Activities | -$4.261M | -1.390M | -1.560M |
Cash From Financing Activities | -$285.0K | -15.10M | -2.300M |
Net Change In Cash | $20.49M | -7.650M | 6.170M |
YoY Change | 3957.62% | 313.51% | -843.37% |
FREE CASH FLOW | |||
Cash From Operating Activities | $25.04M | $8.840M | $10.03M |
Capital Expenditures | $4.368M | -$1.400M | -$1.560M |
Free Cash Flow | $20.67M | $10.24M | $11.59M |
YoY Change | -18.79% | 17.97% | 51.9% |
Facts In Submission
Frame | Concept Type | Concept / XBRL Key | Value | Unit |
---|---|---|---|---|
CY2021Q1 | dei |
Entity Common Stock Shares Outstanding
EntityCommonStockSharesOutstanding
|
7519979 | |
CY2020Q4 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
USD | |
CY2019Q4 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
USD | |
CY2020Q4 | us-gaap |
Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
|
0.01 | |
CY2019Q4 | us-gaap |
Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
|
0.01 | |
CY2020Q4 | us-gaap |
Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
|
1000000 | |
CY2019Q4 | us-gaap |
Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
|
1000000 | |
CY2020Q4 | us-gaap |
Preferred Stock Shares Issued
PreferredStockSharesIssued
|
0 | |
CY2019Q4 | us-gaap |
Preferred Stock Shares Issued
PreferredStockSharesIssued
|
0 | |
CY2020Q4 | us-gaap |
Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
|
0.01 | |
CY2019Q4 | us-gaap |
Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
|
0.01 | |
CY2020Q4 | us-gaap |
Common Stock Shares Authorized
CommonStockSharesAuthorized
|
20000000 | |
CY2019Q4 | us-gaap |
Common Stock Shares Authorized
CommonStockSharesAuthorized
|
20000000 | |
CY2020Q4 | us-gaap |
Common Stock Shares Issued
CommonStockSharesIssued
|
7529625 | |
CY2020Q4 | us-gaap |
Common Stock Shares Outstanding
CommonStockSharesOutstanding
|
7500066 | |
CY2019Q4 | us-gaap |
Common Stock Shares Issued
CommonStockSharesIssued
|
7475768 | |
CY2019Q4 | us-gaap |
Common Stock Shares Outstanding
CommonStockSharesOutstanding
|
7446209 | |
CY2020Q4 | us-gaap |
Treasury Stock Shares
TreasuryStockShares
|
29559 | |
CY2019Q4 | us-gaap |
Treasury Stock Shares
TreasuryStockShares
|
29559 | |
CY2020 | us-gaap |
Number Of Operating Segments
NumberOfOperatingSegments
|
1 | pure |
CY2020 | us-gaap |
Number Of Reportable Segments
NumberOfReportableSegments
|
1 | pure |
CY2019Q4 | us-gaap |
Cash Equivalents At Carrying Value
CashEquivalentsAtCarryingValue
|
0 | USD |
CY2020Q4 | us-gaap |
Cash Equivalents At Carrying Value
CashEquivalentsAtCarryingValue
|
0 | USD |
CY2019 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | |
CY2020 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | |
CY2018 | us-gaap |
Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
|
0 | |
CY2020Q4 | us-gaap |
Deferred Tax Assets Gross
DeferredTaxAssetsGross
|
2917000 | USD |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2020 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
14892 | |
CY2019 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
16536 | |
CY2018 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
10344 | |
CY2020 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
|
0 | pure |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
|
0 | pure |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
|
0 | pure |
CY2020 | us-gaap |
Number Of Reportable Segments
NumberOfReportableSegments
|
1 | pure |
CY2020 | us-gaap |
Number Of Operating Segments
NumberOfOperatingSegments
|
1 | pure |
CY2020Q4 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
24234000 | USD |
CY2019Q4 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
3743000 | USD |
CY2020Q4 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
26428000 | USD |
CY2019Q4 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
28648000 | USD |
CY2020Q4 | us-gaap |
Inventory Net
InventoryNet
|
18642000 | USD |
CY2019Q4 | us-gaap |
Inventory Net
InventoryNet
|
18276000 | USD |
CY2020Q4 | us-gaap |
Prepaid Expense Current
PrepaidExpenseCurrent
|
2560000 | USD |
CY2019Q4 | us-gaap |
Prepaid Expense Current
PrepaidExpenseCurrent
|
2304000 | USD |
CY2020Q4 | us-gaap |
Income Taxes Receivable
IncomeTaxesReceivable
|
0 | USD |
CY2019Q4 | us-gaap |
Income Taxes Receivable
IncomeTaxesReceivable
|
279000 | USD |
CY2020Q4 | us-gaap |
Assets Current
AssetsCurrent
|
71864000 | USD |
CY2019Q4 | us-gaap |
Assets Current
AssetsCurrent
|
53250000 | USD |
CY2020Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
118388000 | USD |
CY2019Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
116089000 | USD |
CY2020Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
64633000 | USD |
CY2019Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
59350000 | USD |
CY2020Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
53755000 | USD |
CY2019Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
56739000 | USD |
CY2020Q4 | us-gaap |
Goodwill
Goodwill
|
51838000 | USD |
CY2019Q4 | us-gaap |
Goodwill
Goodwill
|
51838000 | USD |
CY2020Q4 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
0 | USD |
CY2019Q4 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
334000 | USD |
CY2020Q4 | us-gaap |
Liabilities
Liabilities
|
26311000 | USD |
CY2019Q4 | us-gaap |
Liabilities
Liabilities
|
26767000 | USD |
CY2020Q4 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
1887000 | USD |
CY2019Q4 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
2574000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Current
FinanceLeaseLiabilityCurrent
|
15000 | USD |
CY2019Q4 | us-gaap |
Finance Lease Liability Current
FinanceLeaseLiabilityCurrent
|
0 | USD |
CY2020Q4 | us-gaap |
Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
|
1154000 | USD |
CY2019Q4 | us-gaap |
Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
|
1150000 | USD |
CY2020Q4 | us-gaap |
Accrued Income Taxes Current
AccruedIncomeTaxesCurrent
|
16000 | USD |
CY2020Q4 | us-gaap |
Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
|
19718000 | USD |
CY2019Q4 | us-gaap |
Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
|
20975000 | USD |
CY2020Q4 | us-gaap |
Deferred Compensation Plan Assets
DeferredCompensationPlanAssets
|
3724000 | USD |
CY2019Q4 | us-gaap |
Deferred Compensation Plan Assets
DeferredCompensationPlanAssets
|
2775000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Right Of Use Asset
FinanceLeaseRightOfUseAsset
|
100000 | USD |
CY2019Q4 | us-gaap |
Finance Lease Right Of Use Asset
FinanceLeaseRightOfUseAsset
|
0 | USD |
CY2020Q4 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
2052000 | USD |
CY2019Q4 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
3034000 | USD |
CY2020Q4 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
153000 | USD |
CY2019Q4 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
147000 | USD |
CY2020Q4 | us-gaap |
Assets
Assets
|
203204000 | USD |
CY2019Q4 | us-gaap |
Assets
Assets
|
188758000 | USD |
CY2020Q4 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
4121000 | USD |
CY2019Q4 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
4577000 | USD |
CY2020Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
7944000 | USD |
CY2019Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
8483000 | USD |
CY2019Q4 | us-gaap |
Accrued Income Taxes Current
AccruedIncomeTaxesCurrent
|
0 | USD |
CY2020Q4 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
15137000 | USD |
CY2019Q4 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
16784000 | USD |
CY2020Q4 | us-gaap |
Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
|
5057000 | USD |
CY2019Q4 | us-gaap |
Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
|
4921000 | USD |
CY2020Q4 | us-gaap |
Deferred Compensation Liability Classified Noncurrent
DeferredCompensationLiabilityClassifiedNoncurrent
|
3810000 | USD |
CY2019Q4 | us-gaap |
Deferred Compensation Liability Classified Noncurrent
DeferredCompensationLiabilityClassifiedNoncurrent
|
2788000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Noncurrent
FinanceLeaseLiabilityNoncurrent
|
86000 | USD |
CY2019Q4 | us-gaap |
Finance Lease Liability Noncurrent
FinanceLeaseLiabilityNoncurrent
|
0 | USD |
CY2020Q4 | us-gaap |
Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
|
950000 | USD |
CY2019Q4 | us-gaap |
Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
|
1940000 | USD |
CY2020Q4 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
1271000 | USD |
CY2019Q4 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
0 | USD |
CY2020Q4 | us-gaap |
Common Stock Value
CommonStockValue
|
75000 | USD |
CY2019Q4 | us-gaap |
Common Stock Value
CommonStockValue
|
74000 | USD |
CY2020Q4 | us-gaap |
Additional Paid In Capital
AdditionalPaidInCapital
|
32484000 | USD |
CY2019Q4 | us-gaap |
Additional Paid In Capital
AdditionalPaidInCapital
|
30952000 | USD |
CY2020Q4 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
144921000 | USD |
CY2019Q4 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
131552000 | USD |
CY2020Q4 | us-gaap |
Treasury Stock Value
TreasuryStockValue
|
587000 | USD |
CY2019Q4 | us-gaap |
Treasury Stock Value
TreasuryStockValue
|
587000 | USD |
CY2020Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
176893000 | USD |
CY2019Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
161991000 | USD |
CY2020Q4 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
203204000 | USD |
CY2019Q4 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
188758000 | USD |
CY2020 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
179373000 | USD |
CY2019 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
198381000 | USD |
CY2018 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
190455000 | USD |
CY2020 | us-gaap |
Cost Of Goods And Services Sold
CostOfGoodsAndServicesSold
|
134689000 | USD |
CY2019 | us-gaap |
Cost Of Goods And Services Sold
CostOfGoodsAndServicesSold
|
144422000 | USD |
CY2018 | us-gaap |
Cost Of Goods And Services Sold
CostOfGoodsAndServicesSold
|
142147000 | USD |
CY2020 | us-gaap |
Gross Profit
GrossProfit
|
44684000 | USD |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
14311000 | USD |
CY2020 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.79 | |
CY2019 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
2.66 | |
CY2018 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
1.95 | |
CY2020 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.77 | |
CY2019 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
2.63 | |
CY2019 | us-gaap |
Gross Profit
GrossProfit
|
53959000 | USD |
CY2018 | us-gaap |
Gross Profit
GrossProfit
|
48308000 | USD |
CY2020 | us-gaap |
Selling General And Administrative Expense
SellingGeneralAndAdministrativeExpense
|
27493000 | USD |
CY2019 | us-gaap |
Selling General And Administrative Expense
SellingGeneralAndAdministrativeExpense
|
29251000 | USD |
CY2018 | us-gaap |
Selling General And Administrative Expense
SellingGeneralAndAdministrativeExpense
|
27654000 | USD |
CY2020 | us-gaap |
Business Combination Acquisition Related Costs
BusinessCombinationAcquisitionRelatedCosts
|
0 | USD |
CY2019 | us-gaap |
Business Combination Acquisition Related Costs
BusinessCombinationAcquisitionRelatedCosts
|
0 | USD |
CY2018 | us-gaap |
Business Combination Acquisition Related Costs
BusinessCombinationAcquisitionRelatedCosts
|
1089000 | USD |
CY2020 | us-gaap |
Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
|
-459000 | USD |
CY2019 | us-gaap |
Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
|
-0 | USD |
CY2018 | us-gaap |
Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
|
47000 | USD |
CY2020 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
16732000 | USD |
CY2019 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
24708000 | USD |
CY2018 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
19612000 | USD |
CY2020 | us-gaap |
Investment Income Interest
InvestmentIncomeInterest
|
0 | USD |
CY2019 | us-gaap |
Investment Income Interest
InvestmentIncomeInterest
|
0 | USD |
CY2018 | us-gaap |
Investment Income Interest
InvestmentIncomeInterest
|
47000 | USD |
CY2020 | us-gaap |
Interest Expense
InterestExpense
|
83000 | USD |
CY2019 | us-gaap |
Interest Expense
InterestExpense
|
674000 | USD |
CY2018 | us-gaap |
Interest Expense
InterestExpense
|
1320000 | USD |
CY2020 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-366000 | USD |
CY2019 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-388000 | USD |
CY2018 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
64000 | USD |
CY2020 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
16283000 | USD |
CY2019 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
23646000 | USD |
CY2018 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
18403000 | USD |
CY2020 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
2914000 | USD |
CY2019 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
3896000 | USD |
CY2018 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
4092000 | USD |
CY2020 | us-gaap |
Net Income Loss
NetIncomeLoss
|
13369000 | USD |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
19750000 | USD |
CY2018 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
1.93 | |
CY2020 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7484000 | |
CY2019 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7424000 | |
CY2018 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7347000 | |
CY2020 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7568000 | |
CY2019 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7516000 | |
CY2018 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7430000 | |
CY2017Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
123712000 | USD |
CY2018 | us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
1212000 | USD |
CY2018 | us-gaap |
Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
|
1270000 | USD |
CY2018 | us-gaap |
Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
|
144000 | USD |
CY2018 | us-gaap |
Adjustments To Additional Paid In Capital Tax Effect From Share Based Compensation
AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
|
167000 | USD |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
14311000 | USD |
CY2018Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
140457000 | USD |
CY2019 | us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
1591000 | USD |
CY2019 | us-gaap |
Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
|
705000 | USD |
CY2019 | us-gaap |
Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
|
512000 | USD |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
19750000 | USD |
CY2019Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
161991000 | USD |
CY2020 | us-gaap |
Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
|
1807000 | USD |
CY2020 | us-gaap |
Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
|
474000 | USD |
CY2020 | us-gaap |
Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
|
748000 | USD |
CY2020 | us-gaap |
Net Income Loss
NetIncomeLoss
|
13369000 | USD |
CY2020Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
176893000 | USD |
CY2020 | us-gaap |
Net Income Loss
NetIncomeLoss
|
13369000 | USD |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
19750000 | USD |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
14311000 | USD |
CY2020 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
8268000 | USD |
CY2019 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
8172000 | USD |
CY2018 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
7831000 | USD |
CY2020 | us-gaap |
Gain Loss On Disposition Of Assets
GainLossOnDispositionOfAssets
|
-459000 | USD |
CY2019 | us-gaap |
Gain Loss On Disposition Of Assets
GainLossOnDispositionOfAssets
|
-0 | USD |
CY2018 | us-gaap |
Gain Loss On Disposition Of Assets
GainLossOnDispositionOfAssets
|
47000 | USD |
CY2020 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
1807000 | USD |
CY2019 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
1591000 | USD |
CY2018 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
1212000 | USD |
CY2020 | us-gaap |
Finance Lease Interest Expense
FinanceLeaseInterestExpense
|
2000 | USD |
CY2019 | us-gaap |
Finance Lease Interest Expense
FinanceLeaseInterestExpense
|
0 | USD |
CY2018 | us-gaap |
Finance Lease Interest Expense
FinanceLeaseInterestExpense
|
0 | USD |
CY2020 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
136000 | USD |
CY2019 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
792000 | USD |
CY2018 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
1881000 | USD |
CY2020 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
-2220000 | USD |
CY2019 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
327000 | USD |
CY2018 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
2556000 | USD |
CY2020 | us-gaap |
Increase Decrease In Inventories
IncreaseDecreaseInInventories
|
366000 | USD |
CY2019 | us-gaap |
Increase Decrease In Inventories
IncreaseDecreaseInInventories
|
-1300000 | USD |
CY2018 | us-gaap |
Increase Decrease In Inventories
IncreaseDecreaseInInventories
|
2295000 | USD |
CY2020 | us-gaap |
Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
|
256000 | USD |
CY2019 | us-gaap |
Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
|
98000 | USD |
CY2018 | us-gaap |
Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
|
249000 | USD |
CY2020 | us-gaap |
Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
|
-295000 | USD |
CY2019 | us-gaap |
Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
|
-2006000 | USD |
CY2018 | us-gaap |
Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
|
1268000 | USD |
CY2020 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
73000 | USD |
CY2019 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
-110000 | USD |
CY2018 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
76000 | USD |
CY2020 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
-681000 | USD |
CY2019 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
-2472000 | USD |
CY2018 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
1113000 | USD |
CY2020 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
-539000 | USD |
CY2019 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
25000 | USD |
CY2018 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
1472000 | USD |
CY2020 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
-687000 | USD |
CY2019 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
67000 | USD |
CY2018 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
35000 | USD |
CY2020 | us-gaap |
Increase Decrease In Other Operating Liabilities
IncreaseDecreaseInOtherOperatingLiabilities
|
1083000 | USD |
CY2019 | us-gaap |
Increase Decrease In Other Operating Liabilities
IncreaseDecreaseInOtherOperatingLiabilities
|
313000 | USD |
CY2018 | us-gaap |
Increase Decrease In Other Operating Liabilities
IncreaseDecreaseInOtherOperatingLiabilities
|
-44000 | USD |
CY2020 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
25037000 | USD |
CY2019 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
31229000 | USD |
CY2018 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
21320000 | USD |
CY2020 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
4368000 | USD |
CY2019 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
5778000 | USD |
CY2018 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
5428000 | USD |
CY2020 | us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
-0 | USD |
CY2019 | us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
-0 | USD |
CY2018 | us-gaap |
Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
|
76978000 | USD |
CY2020 | us-gaap |
Proceeds From Sale Of Property Plant And Equipment
ProceedsFromSaleOfPropertyPlantAndEquipment
|
107000 | USD |
CY2019 | us-gaap |
Proceeds From Sale Of Property Plant And Equipment
ProceedsFromSaleOfPropertyPlantAndEquipment
|
4000 | USD |
CY2018 | us-gaap |
Proceeds From Sale Of Property Plant And Equipment
ProceedsFromSaleOfPropertyPlantAndEquipment
|
77000 | USD |
CY2020 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-4261000 | USD |
CY2019 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-5774000 | USD |
CY2018 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-82329000 | USD |
CY2020 | us-gaap |
Proceeds From Lines Of Credit
ProceedsFromLinesOfCredit
|
5500000 | USD |
CY2019 | us-gaap |
Proceeds From Lines Of Credit
ProceedsFromLinesOfCredit
|
0 | USD |
CY2018 | us-gaap |
Proceeds From Lines Of Credit
ProceedsFromLinesOfCredit
|
36000000 | USD |
CY2020 | us-gaap |
Repayments Of Lines Of Credit
RepaymentsOfLinesOfCredit
|
5500000 | USD |
CY2019 | us-gaap |
Repayments Of Lines Of Credit
RepaymentsOfLinesOfCredit
|
8000000 | USD |
CY2018 | us-gaap |
Repayments Of Lines Of Credit
RepaymentsOfLinesOfCredit
|
28000000 | USD |
CY2020 | us-gaap |
Proceeds From Issuance Of Long Term Debt
ProceedsFromIssuanceOfLongTermDebt
|
0 | USD |
CY2019 | us-gaap |
Proceeds From Issuance Of Long Term Debt
ProceedsFromIssuanceOfLongTermDebt
|
0 | USD |
CY2018 | us-gaap |
Proceeds From Issuance Of Long Term Debt
ProceedsFromIssuanceOfLongTermDebt
|
20000000 | USD |
CY2020 | us-gaap |
Repayments Of Long Term Debt
RepaymentsOfLongTermDebt
|
-0 | USD |
CY2019 | us-gaap |
Repayments Of Long Term Debt
RepaymentsOfLongTermDebt
|
17143000 | USD |
CY2018 | us-gaap |
Repayments Of Long Term Debt
RepaymentsOfLongTermDebt
|
2857000 | USD |
CY2020 | us-gaap |
Finance Lease Principal Payments
FinanceLeasePrincipalPayments
|
11000 | USD |
CY2019 | us-gaap |
Finance Lease Principal Payments
FinanceLeasePrincipalPayments
|
-0 | USD |
CY2018 | us-gaap |
Finance Lease Principal Payments
FinanceLeasePrincipalPayments
|
-0 | USD |
CY2020 | ufpt |
Proceeds From Stock Options Exercised Net
ProceedsFromStockOptionsExercisedNet
|
474000 | USD |
CY2019 | ufpt |
Proceeds From Stock Options Exercised Net
ProceedsFromStockOptionsExercisedNet
|
705000 | USD |
CY2018 | ufpt |
Proceeds From Stock Options Exercised Net
ProceedsFromStockOptionsExercisedNet
|
1270000 | USD |
CY2020 | us-gaap |
Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
|
748000 | USD |
CY2019 | us-gaap |
Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
|
512000 | USD |
CY2018 | us-gaap |
Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
|
144000 | USD |
CY2020 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-285000 | USD |
CY2019 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-24950000 | USD |
CY2018 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
26269000 | USD |
CY2020 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
20491000 | USD |
CY2019 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
505000 | USD |
CY2018 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
-34740000 | USD |
CY2019Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
3743000 | USD |
CY2018Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
3238000 | USD |
CY2017Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
37978000 | USD |
CY2020Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
24234000 | USD |
CY2019Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
3743000 | USD |
CY2018Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
3238000 | USD |
CY2020 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
8200000 | USD |
CY2019 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
8800000 | USD |
CY2018 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
10500000 | USD |
CY2019Q4 | us-gaap |
Contract With Customer Liability
ContractWithCustomerLiability
|
2574000 | USD |
CY2019Q4 | us-gaap |
Contract With Customer Asset Net
ContractWithCustomerAssetNet
|
72000 | USD |
CY2018Q4 | us-gaap |
Contract With Customer Asset Net
ContractWithCustomerAssetNet
|
65000 | USD |
CY2020 | ufpt |
Contract With Customer Asset Increase Decrease For Unbilled Revenue Recognized
ContractWithCustomerAssetIncreaseDecreaseForUnbilledRevenueRecognized
|
3147000 | USD |
CY2019 | ufpt |
Contract With Customer Asset Increase Decrease For Unbilled Revenue Recognized
ContractWithCustomerAssetIncreaseDecreaseForUnbilledRevenueRecognized
|
831000 | USD |
CY2020Q4 | us-gaap |
Cash Uninsured Amount
CashUninsuredAmount
|
26100000 | USD |
CY2020 | us-gaap |
Contract With Customer Asset Reclassified To Receivable
ContractWithCustomerAssetReclassifiedToReceivable
|
2948000 | USD |
CY2019 | us-gaap |
Contract With Customer Asset Reclassified To Receivable
ContractWithCustomerAssetReclassifiedToReceivable
|
824000 | USD |
CY2020Q4 | us-gaap |
Contract With Customer Asset Net
ContractWithCustomerAssetNet
|
271000 | USD |
CY2019Q4 | us-gaap |
Contract With Customer Asset Net
ContractWithCustomerAssetNet
|
72000 | USD |
CY2020Q4 | us-gaap |
Business Acquisition Purchase Price Allocation Goodwill Expected Tax Deductible Amount
BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount
|
48300000 | USD |
CY2020 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
179373000 | USD |
CY2019 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
198381000 | USD |
CY2018 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
190455000 | USD |
CY2019Q4 | us-gaap |
Contract With Customer Liability
ContractWithCustomerLiability
|
2574000 | USD |
CY2018Q4 | us-gaap |
Contract With Customer Liability
ContractWithCustomerLiability
|
2507000 | USD |
CY2020 | ufpt |
Contract With Customer Liability Increase Due To Consideration Received From Customers
ContractWithCustomerLiabilityIncreaseDueToConsiderationReceivedFromCustomers
|
2673000 | USD |
CY2019 | ufpt |
Contract With Customer Liability Increase Due To Consideration Received From Customers
ContractWithCustomerLiabilityIncreaseDueToConsiderationReceivedFromCustomers
|
3216000 | USD |
CY2020 | us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
3360000 | USD |
CY2019 | us-gaap |
Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
|
3149000 | USD |
CY2020Q4 | us-gaap |
Contract With Customer Liability
ContractWithCustomerLiability
|
1887000 | USD |
CY2018 | us-gaap |
Interest Paid Net
InterestPaidNet
|
1303000 | USD |
CY2020 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
2481000 | USD |
CY2019 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
1255000 | USD |
CY2018 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
3463000 | USD |
CY2020 | us-gaap |
Interest Paid Net
InterestPaidNet
|
71000 | USD |
CY2019 | us-gaap |
Interest Paid Net
InterestPaidNet
|
664000 | USD |
CY2020 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
225000 | USD |
CY2019 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
213000 | USD |
CY2018 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
218000 | USD |
CY2020Q4 | us-gaap |
Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
|
26912000 | USD |
CY2019Q4 | us-gaap |
Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
|
29134000 | USD |
CY2020Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
484000 | USD |
CY2019Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
|
486000 | USD |
CY2020Q4 | us-gaap |
Receivables Net Current
ReceivablesNetCurrent
|
26428000 | USD |
CY2019Q4 | us-gaap |
Receivables Net Current
ReceivablesNetCurrent
|
28648000 | USD |
CY2019Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
|
486000 | USD |
CY2018Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
|
564000 | USD |
CY2020 | us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
13000 | USD |
CY2019 | us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
-52000 | USD |
CY2020 | us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
15000 | USD |
CY2019 | us-gaap |
Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
|
26000 | USD |
CY2020Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
|
484000 | USD |
CY2019Q4 | us-gaap |
Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
|
486000 | USD |
CY2020Q4 | us-gaap |
Inventory Raw Materials Net Of Reserves
InventoryRawMaterialsNetOfReserves
|
12229000 | USD |
CY2019Q4 | us-gaap |
Inventory Raw Materials Net Of Reserves
InventoryRawMaterialsNetOfReserves
|
10540000 | USD |
CY2020Q4 | us-gaap |
Inventory Work In Process Net Of Reserves
InventoryWorkInProcessNetOfReserves
|
1991000 | USD |
CY2019Q4 | us-gaap |
Inventory Work In Process Net Of Reserves
InventoryWorkInProcessNetOfReserves
|
2279000 | USD |
CY2020Q4 | us-gaap |
Inventory Finished Goods Net Of Reserves
InventoryFinishedGoodsNetOfReserves
|
4422000 | USD |
CY2019Q4 | us-gaap |
Inventory Finished Goods Net Of Reserves
InventoryFinishedGoodsNetOfReserves
|
5457000 | USD |
CY2020Q4 | us-gaap |
Inventory Net
InventoryNet
|
18642000 | USD |
CY2019Q4 | us-gaap |
Inventory Net
InventoryNet
|
18276000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
23384000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
3666000 | USD |
CY2020Q4 | us-gaap |
Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
|
19718000 | USD |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
23384000 | USD |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
2409000 | USD |
CY2019Q4 | us-gaap |
Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
|
20975000 | USD |
CY2020 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
1300000 | USD |
CY2019 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
1300000 | USD |
CY2018 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
1200000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
|
1257000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Two
FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
|
1257000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
|
1172000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
|
1164000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
|
1164000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense After Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
|
13704000 | USD |
CY2020Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
19718000 | USD |
CY2020 | us-gaap |
Current Federal Tax Expense Benefit
CurrentFederalTaxExpenseBenefit
|
2223000 | USD |
CY2019 | us-gaap |
Current Federal Tax Expense Benefit
CurrentFederalTaxExpenseBenefit
|
2920000 | USD |
CY2020Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
118388000 | USD |
CY2019Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
116089000 | USD |
CY2020 | us-gaap |
Depreciation And Amortization
DepreciationAndAmortization
|
7000000.0 | USD |
CY2019 | us-gaap |
Depreciation And Amortization
DepreciationAndAmortization
|
6900000 | USD |
CY2018 | us-gaap |
Depreciation And Amortization
DepreciationAndAmortization
|
6600000 | USD |
CY2020Q4 | us-gaap |
Accrued Salaries Current
AccruedSalariesCurrent
|
2443000 | USD |
CY2019Q4 | us-gaap |
Accrued Salaries Current
AccruedSalariesCurrent
|
3961000 | USD |
CY2020Q4 | us-gaap |
Self Insurance Reserve Current
SelfInsuranceReserveCurrent
|
921000 | USD |
CY2019Q4 | us-gaap |
Self Insurance Reserve Current
SelfInsuranceReserveCurrent
|
1033000 | USD |
CY2020Q4 | us-gaap |
Accrued Vacation Current
AccruedVacationCurrent
|
1538000 | USD |
CY2019Q4 | us-gaap |
Accrued Vacation Current
AccruedVacationCurrent
|
1315000 | USD |
CY2020Q4 | us-gaap |
Accrued Payroll Taxes Current
AccruedPayrollTaxesCurrent
|
810000 | USD |
CY2019Q4 | us-gaap |
Accrued Payroll Taxes Current
AccruedPayrollTaxesCurrent
|
0 | USD |
CY2020Q4 | us-gaap |
Other Accrued Liabilities Current
OtherAccruedLiabilitiesCurrent
|
2232000 | USD |
CY2019Q4 | us-gaap |
Other Accrued Liabilities Current
OtherAccruedLiabilitiesCurrent
|
2174000 | USD |
CY2020Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
7944000 | USD |
CY2019Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
8483000 | USD |
CY2018 | us-gaap |
Current Federal Tax Expense Benefit
CurrentFederalTaxExpenseBenefit
|
1772000 | USD |
CY2020 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
555000 | USD |
CY2019 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
184000 | USD |
CY2018 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
439000 | USD |
CY2020 | us-gaap |
Current Income Tax Expense Benefit
CurrentIncomeTaxExpenseBenefit
|
2778000 | USD |
CY2019 | us-gaap |
Current Income Tax Expense Benefit
CurrentIncomeTaxExpenseBenefit
|
3104000 | USD |
CY2018 | us-gaap |
Current Income Tax Expense Benefit
CurrentIncomeTaxExpenseBenefit
|
2211000 | USD |
CY2020 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
-28000 | USD |
CY2019 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
485000 | USD |
CY2018 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
1917000 | USD |
CY2020 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
164000 | USD |
CY2019 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
307000 | USD |
CY2018 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
-36000 | USD |
CY2020 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
136000 | USD |
CY2019 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
792000 | USD |
CY2018 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
1881000 | USD |
CY2020 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
2914000 | USD |
CY2019 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
3896000 | USD |
CY2018 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
4092000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
|
351000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
|
362000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Inventory
DeferredTaxAssetsInventory
|
550000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Inventory
DeferredTaxAssetsInventory
|
396000 | USD |
CY2020Q4 | ufpt |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Current
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsCurrent
|
802000 | USD |
CY2019Q4 | ufpt |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Current
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsCurrent
|
578000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Share Based Compensation Cost
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
|
524000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Share Based Compensation Cost
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
|
403000 | USD |
CY2020Q4 | ufpt |
Deferred Tax Assets Lease Liability
DeferredTaxAssetsLeaseLiability
|
567000 | USD |
CY2019Q4 | ufpt |
Deferred Tax Assets Lease Liability
DeferredTaxAssetsLeaseLiability
|
795000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Goodwill And Intangible Assets
DeferredTaxAssetsGoodwillAndIntangibleAssets
|
0 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Goodwill And Intangible Assets
DeferredTaxAssetsGoodwillAndIntangibleAssets
|
73000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Tax Credit Carryforwards
DeferredTaxAssetsTaxCreditCarryforwards
|
123000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Credit Carryforwards
DeferredTaxAssetsTaxCreditCarryforwards
|
274000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Gross
DeferredTaxAssetsGross
|
2917000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Gross
DeferredTaxAssetsGross
|
2881000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
|
64000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
|
136000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Net
DeferredTaxAssetsNet
|
2853000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Assets Net
DeferredTaxAssetsNet
|
2745000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Liabilities Property Plant And Equipment
DeferredTaxLiabilitiesPropertyPlantAndEquipment
|
4527000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Property Plant And Equipment
DeferredTaxLiabilitiesPropertyPlantAndEquipment
|
4877000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Liabilities Goodwill And Intangible Assets Goodwill
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
|
2795000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Goodwill And Intangible Assets Goodwill
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
|
2008000 | USD |
CY2020Q4 | ufpt |
Deferred Tax Liabilities Right Of Use Asset
DeferredTaxLiabilitiesRightOfUseAsset
|
554000 | USD |
CY2019Q4 | ufpt |
Deferred Tax Liabilities Right Of Use Asset
DeferredTaxLiabilitiesRightOfUseAsset
|
781000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Liabilities Goodwill And Intangible Assets Intangible Assets
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
|
34000 | USD |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Goodwill And Intangible Assets Intangible Assets
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
|
-0 | USD |
CY2020Q4 | us-gaap |
Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
|
7910000 | USD |
CY2019Q4 | us-gaap |
Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
|
7666000 | USD |
CY2020Q4 | ufpt |
Aggregate Deferred Tax Liabilities Noncurrent
AggregateDeferredTaxLiabilitiesNoncurrent
|
5057000 | USD |
CY2019Q4 | ufpt |
Aggregate Deferred Tax Liabilities Noncurrent
AggregateDeferredTaxLiabilitiesNoncurrent
|
4921000 | USD |
CY2020Q4 | us-gaap |
Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
|
64000 | USD |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.21 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation State And Local Income Taxes
EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
|
0.042 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation State And Local Income Taxes
EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
|
0.018 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation State And Local Income Taxes
EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
|
0.028 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Meals And Entertainment
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
|
0.001 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Meals And Entertainment
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
|
0.002 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Meals And Entertainment
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
|
0.002 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Tax Credits
EffectiveIncomeTaxRateReconciliationTaxCredits
|
0.072 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Tax Credits
EffectiveIncomeTaxRateReconciliationTaxCredits
|
0.062 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Tax Credits
EffectiveIncomeTaxRateReconciliationTaxCredits
|
0.019 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Share Based Compensation Cost
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
|
0 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Share Based Compensation Cost
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
|
0 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Nondeductible Expense Share Based Compensation Cost
EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
|
0.001 | pure |
CY2020 | ufpt |
Effective Income Tax Rate Reconciliation Unrecognized Tax Benefits Adjustments
EffectiveIncomeTaxRateReconciliationUnrecognizedTaxBenefitsAdjustments
|
0 | pure |
CY2019 | ufpt |
Effective Income Tax Rate Reconciliation Unrecognized Tax Benefits Adjustments
EffectiveIncomeTaxRateReconciliationUnrecognizedTaxBenefitsAdjustments
|
-0.007 | pure |
CY2018 | ufpt |
Effective Income Tax Rate Reconciliation Unrecognized Tax Benefits Adjustments
EffectiveIncomeTaxRateReconciliationUnrecognizedTaxBenefitsAdjustments
|
0 | pure |
CY2020 | ufpt |
Effective Income Tax Rate Reconciliation Tax Benefits From Sharebased Compensation Cost Percent
EffectiveIncomeTaxRateReconciliationTaxBenefitsFromSharebasedCompensationCostPercent
|
-0.012 | pure |
CY2019 | ufpt |
Effective Income Tax Rate Reconciliation Tax Benefits From Sharebased Compensation Cost Percent
EffectiveIncomeTaxRateReconciliationTaxBenefitsFromSharebasedCompensationCostPercent
|
-0.007 | pure |
CY2018 | ufpt |
Effective Income Tax Rate Reconciliation Tax Benefits From Sharebased Compensation Cost Percent
EffectiveIncomeTaxRateReconciliationTaxBenefitsFromSharebasedCompensationCostPercent
|
-0.013 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Share Based Compensation Excess Tax Benefit Percent
EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
|
0.008 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Share Based Compensation Excess Tax Benefit Percent
EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
|
0.006 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Share Based Compensation Excess Tax Benefit Percent
EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
|
0.008 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Other Adjustments
EffectiveIncomeTaxRateReconciliationOtherAdjustments
|
0.002 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Other Adjustments
EffectiveIncomeTaxRateReconciliationOtherAdjustments
|
0.004 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Other Adjustments
EffectiveIncomeTaxRateReconciliationOtherAdjustments
|
0.005 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Reconciliation Change In Deferred Tax Assets Valuation Allowance
EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
|
0 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation Change In Deferred Tax Assets Valuation Allowance
EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
|
0.001 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation Change In Deferred Tax Assets Valuation Allowance
EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
|
0 | pure |
CY2020 | us-gaap |
Effective Income Tax Rate Continuing Operations
EffectiveIncomeTaxRateContinuingOperations
|
0.179 | pure |
CY2019 | us-gaap |
Effective Income Tax Rate Continuing Operations
EffectiveIncomeTaxRateContinuingOperations
|
0.165 | pure |
CY2018 | us-gaap |
Effective Income Tax Rate Continuing Operations
EffectiveIncomeTaxRateContinuingOperations
|
0.222 | pure |
CY2019Q4 | us-gaap |
Unrecognized Tax Benefits
UnrecognizedTaxBenefits
|
0 | USD |
CY2018Q4 | us-gaap |
Unrecognized Tax Benefits
UnrecognizedTaxBenefits
|
150000 | USD |
CY2020 | us-gaap |
Unrecognized Tax Benefits Decreases Resulting From Prior Period Tax Positions
UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
|
-0 | USD |
CY2019 | us-gaap |
Unrecognized Tax Benefits Decreases Resulting From Prior Period Tax Positions
UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
|
150000 | USD |
CY2020Q4 | us-gaap |
Unrecognized Tax Benefits
UnrecognizedTaxBenefits
|
0 | USD |
CY2019Q4 | us-gaap |
Unrecognized Tax Benefits
UnrecognizedTaxBenefits
|
0 | USD |
CY2019Q1 | us-gaap |
Unrecognized Tax Benefits Decreases Resulting From Settlements With Taxing Authorities
UnrecognizedTaxBenefitsDecreasesResultingFromSettlementsWithTaxingAuthorities
|
156000 | USD |
CY2020 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7484000 | |
CY2019 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7424000 | |
CY2018 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
7347000 | |
CY2020 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
84000 | |
CY2019 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
92000 | |
CY2018 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
83000 | |
CY2020 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7568000 | |
CY2019 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7516000 | |
CY2018 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
7430000 | |
CY2020 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
|
0.328 | pure |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
|
0.289 | pure |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
|
0.277 | pure |
CY2020 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
|
0.003 | pure |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
|
0.023 | pure |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
|
0.027 | pure |
CY2020Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
|
43.95 | |
CY2019Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
|
38.61 | |
CY2018Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExercisePrice
|
31.20 | |
CY2020 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
|
P6Y1M6D | |
CY2019 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
|
P6Y | |
CY2018 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
|
P6Y | |
CY2020 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
14.10 | |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
12.70 | |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
10.15 | |
CY2020Q4 | ufpt |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Next Twelve Months
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNextTwelveMonths
|
1076000 | USD |
CY2020Q4 | ufpt |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Year Two
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostYearTwo
|
588000 | USD |
CY2020Q4 | ufpt |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Year Three
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostYearThree
|
262000 | USD |
CY2020Q4 | ufpt |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Year Four
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostYearFour
|
23000 | USD |
CY2020Q4 | us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
|
1949000 | USD |
CY2020 | us-gaap |
Finance Lease Right Of Use Asset Amortization
FinanceLeaseRightOfUseAssetAmortization
|
10000 | USD |
CY2019 | us-gaap |
Finance Lease Right Of Use Asset Amortization
FinanceLeaseRightOfUseAssetAmortization
|
0 | USD |
CY2020 | us-gaap |
Finance Lease Interest Expense
FinanceLeaseInterestExpense
|
2000 | USD |
CY2019 | us-gaap |
Finance Lease Interest Expense
FinanceLeaseInterestExpense
|
0 | USD |
CY2020 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
1207000 | USD |
CY2019 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
1222000 | USD |
CY2020 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
215000 | USD |
CY2019 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
219000 | USD |
CY2020 | us-gaap |
Short Term Lease Cost
ShortTermLeaseCost
|
28000 | USD |
CY2019 | us-gaap |
Short Term Lease Cost
ShortTermLeaseCost
|
27000 | USD |
CY2020 | us-gaap |
Lease Cost
LeaseCost
|
1462000 | USD |
CY2019 | us-gaap |
Lease Cost
LeaseCost
|
1468000 | USD |
CY2020 | us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
1212000 | USD |
CY2019 | us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
1208000 | USD |
CY2020 | us-gaap |
Finance Lease Principal Payments
FinanceLeasePrincipalPayments
|
11000 | USD |
CY2019 | us-gaap |
Finance Lease Principal Payments
FinanceLeasePrincipalPayments
|
0 | USD |
CY2020 | us-gaap |
Right Of Use Asset Obtained In Exchange For Finance Lease Liability
RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
|
110000 | USD |
CY2019 | us-gaap |
Right Of Use Asset Obtained In Exchange For Finance Lease Liability
RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
|
0 | USD |
CY2020Q4 | us-gaap |
Finance Lease Weighted Average Remaining Lease Term1
FinanceLeaseWeightedAverageRemainingLeaseTerm1
|
P6Y3M29D | |
CY2020Q4 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P1Y9M10D | |
CY2019Q4 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P2Y8M8D | |
CY2020Q4 | us-gaap |
Finance Lease Weighted Average Discount Rate Percent
FinanceLeaseWeightedAverageDiscountRatePercent
|
0.0226 | pure |
CY2019Q4 | us-gaap |
Finance Lease Weighted Average Discount Rate Percent
FinanceLeaseWeightedAverageDiscountRatePercent
|
0 | pure |
CY2020Q4 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.0437 | pure |
CY2019Q4 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.0445 | pure |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due Next Twelve Months
FinanceLeaseLiabilityPaymentsDueNextTwelveMonths
|
17000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
|
1177000 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
|
1173000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due Year Two
FinanceLeaseLiabilityPaymentsDueYearTwo
|
17000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
|
973000 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
|
1118000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due Year Three
FinanceLeaseLiabilityPaymentsDueYearThree
|
17000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
|
38000 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
|
957000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due Year Four
FinanceLeaseLiabilityPaymentsDueYearFour
|
17000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Four
LesseeOperatingLeaseLiabilityPaymentsDueYearFour
|
0 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Four
LesseeOperatingLeaseLiabilityPaymentsDueYearFour
|
36000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due Year Five
FinanceLeaseLiabilityPaymentsDueYearFive
|
17000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Five
LesseeOperatingLeaseLiabilityPaymentsDueYearFive
|
0 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Five
LesseeOperatingLeaseLiabilityPaymentsDueYearFive
|
0 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due After Year Five
FinanceLeaseLiabilityPaymentsDueAfterYearFive
|
23000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due After Year Five
LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
|
0 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due After Year Five
LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
|
0 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Payments Due
FinanceLeaseLiabilityPaymentsDue
|
108000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
|
2188000 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
|
3284000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability Undiscounted Excess Amount
FinanceLeaseLiabilityUndiscountedExcessAmount
|
7000 | USD |
CY2020Q4 | us-gaap |
Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
|
84000 | USD |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
|
194000 | USD |
CY2020Q4 | us-gaap |
Finance Lease Liability
FinanceLeaseLiability
|
101000 | USD |
CY2020Q4 | us-gaap |
Operating Lease Liability
OperatingLeaseLiability
|
2104000 | USD |
CY2019Q4 | us-gaap |
Operating Lease Liability
OperatingLeaseLiability
|
3090000 | USD |
CY2020 | us-gaap |
Operating Lease Expense
OperatingLeaseExpense
|
1300000 | USD |
CY2019 | us-gaap |
Operating Lease Expense
OperatingLeaseExpense
|
1200000 | USD |
CY2018 | us-gaap |
Operating Lease Expense
OperatingLeaseExpense
|
1200000 | USD |
CY2020 | us-gaap |
Defined Contribution Plan Cost Recognized
DefinedContributionPlanCostRecognized
|
900000 | USD |
CY2019 | us-gaap |
Defined Contribution Plan Cost Recognized
DefinedContributionPlanCostRecognized
|
1000000.0 | USD |
CY2018 | us-gaap |
Defined Contribution Plan Cost Recognized
DefinedContributionPlanCostRecognized
|
1100000 | USD |
CY2020 | ufpt |
Self Iinsured Health Insurance Program Stop Loss Amount
SelfIinsuredHealthInsuranceProgramStopLossAmount
|
225000 | USD |
CY2020Q4 | us-gaap |
Deferred Compensation Liability Classified Noncurrent
DeferredCompensationLiabilityClassifiedNoncurrent
|
3800000 | USD |
CY2019Q4 | us-gaap |
Deferred Compensation Liability Classified Noncurrent
DeferredCompensationLiabilityClassifiedNoncurrent
|
2800000 | USD |
CY2020Q4 | us-gaap |
Defined Benefit Plan Assets For Plan Benefits Noncurrent
DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent
|
3700000 | USD |
CY2019Q4 | us-gaap |
Defined Benefit Plan Assets For Plan Benefits Noncurrent
DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent
|
2800000 | USD |
CY2020 | ufpt |
Revenue From Contract With Customer Including Assessed Tax Percentage
RevenueFromContractWithCustomerIncludingAssessedTaxPercentage
|
1 | pure |
CY2020 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
179373000 | USD |
CY2019 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
198381000 | USD |
CY2019 | ufpt |
Revenue From Contract With Customer Including Assessed Tax Percentage
RevenueFromContractWithCustomerIncludingAssessedTaxPercentage
|
1 | pure |
CY2018 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
190455000 | USD |
CY2018 | ufpt |
Revenue From Contract With Customer Including Assessed Tax Percentage
RevenueFromContractWithCustomerIncludingAssessedTaxPercentage
|
1 | pure |
CY2020Q1 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
48277000 | USD |
CY2020Q2 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
42644000 | USD |
CY2020Q3 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
43299000 | USD |
CY2020Q4 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
45153000 | USD |
CY2020Q1 | us-gaap |
Gross Profit
GrossProfit
|
12823000 | USD |
CY2020Q2 | us-gaap |
Gross Profit
GrossProfit
|
9949000 | USD |
CY2020Q3 | us-gaap |
Gross Profit
GrossProfit
|
10528000 | USD |
CY2020Q4 | us-gaap |
Gross Profit
GrossProfit
|
11384000 | USD |
CY2020Q1 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
3891000 | USD |
CY2020Q2 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
2318000 | USD |
CY2020Q3 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
2988000 | USD |
CY2020Q4 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
4172000 | USD |
CY2020Q1 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.52 | |
CY2020Q2 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.31 | |
CY2020Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.0 | |
CY2020Q4 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.56 | |
CY2020Q1 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.52 | |
CY2020Q2 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.31 | |
CY2020Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.0 | |
CY2020Q4 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.55 | |
CY2019Q1 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
47328000 | USD |
CY2019Q1 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
3734000 | USD |
CY2019Q2 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
4598000 | USD |
CY2019Q3 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
5641000 | USD |
CY2019Q4 | us-gaap |
Net Income Loss Available To Common Stockholders Basic
NetIncomeLossAvailableToCommonStockholdersBasic
|
5777000 | USD |
CY2019Q1 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.0 | |
CY2019Q2 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.62 | |
CY2019Q3 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.76 | |
CY2019Q2 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
51399000 | USD |
CY2019Q3 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
49394000 | USD |
CY2019Q4 | us-gaap |
Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
|
50260000 | USD |
CY2019Q1 | us-gaap |
Gross Profit
GrossProfit
|
12497000 | USD |
CY2019Q2 | us-gaap |
Gross Profit
GrossProfit
|
14371000 | USD |
CY2019Q3 | us-gaap |
Gross Profit
GrossProfit
|
13321000 | USD |
CY2019Q4 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.78 | |
CY2019Q1 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.0 | |
CY2019Q4 | us-gaap |
Gross Profit
GrossProfit
|
13770000 | USD |
CY2019Q2 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.62 | |
CY2019Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.75 | |
CY2019Q4 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.77 | |
CY2019Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
486000 | USD |
CY2018Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
564000 | USD |
CY2017Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
652000 | USD |
CY2020 | us-gaap |
Valuation Allowances And Reserves Charged To Cost And Expense
ValuationAllowancesAndReservesChargedToCostAndExpense
|
13000 | USD |
CY2019 | us-gaap |
Valuation Allowances And Reserves Charged To Cost And Expense
ValuationAllowancesAndReservesChargedToCostAndExpense
|
-52000 | USD |
CY2018 | us-gaap |
Valuation Allowances And Reserves Charged To Cost And Expense
ValuationAllowancesAndReservesChargedToCostAndExpense
|
-50000 | USD |
CY2020 | us-gaap |
Valuation Allowances And Reserves Deductions
ValuationAllowancesAndReservesDeductions
|
15000 | USD |
CY2019 | us-gaap |
Valuation Allowances And Reserves Deductions
ValuationAllowancesAndReservesDeductions
|
26000 | USD |
CY2018 | us-gaap |
Valuation Allowances And Reserves Deductions
ValuationAllowancesAndReservesDeductions
|
38000 | USD |
CY2020Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
484000 | USD |
CY2019Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
486000 | USD |
CY2018Q4 | us-gaap |
Valuation Allowances And Reserves Balance
ValuationAllowancesAndReservesBalance
|
564000 | USD |