XML 101 R122.htm IDEA: XBRL DOCUMENT v2.4.1.9
Fair Value Level 3 Reconciliation (Details) (USD $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Trading securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance $ 2,774us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
$ 2,286us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
$ 4,238us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 512us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
469us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
307us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 6us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales (299)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(50)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(33)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (277)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(304)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(409)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 (267)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(438)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(2,497)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 581us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
811us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
680us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 3,030us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2,774us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2,286us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 486us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
430us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
177us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Fannie Mae [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 42us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
68us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1,737us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income (27)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 6us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(33)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(17)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(118)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 (39)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(1,581)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 325us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
65us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 305us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
42us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
68us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held (18)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(9)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(6)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Freddie Mac [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Ginnie Mae [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance   1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements   (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3   (3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3   3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held   0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Alt-A private-label securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 618us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
104us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
345us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 88us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
256us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
165us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales (58)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (81)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(115)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(111)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 (226)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(435)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(907)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 256us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
808us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
612us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 597us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
618us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
104us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 97us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
223us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
39us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Subprime private-label securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 1,448us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1,319us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1,280us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 270us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
328us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
192us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales (241)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(50)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (170)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(149)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(153)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 1,307us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1,448us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
1,319us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 234us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
322us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
192us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Mortgage revenue bonds [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 565us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
675us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
724us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 168us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(101)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(29)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (11)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(20)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 722us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
565us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
675us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 160us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(101)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(29)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Trading securities [Member] | Other [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 99us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
117us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
143us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Settlements (13)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(13)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Ending Balance 99us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
99us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
117us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Net Unrealized (Losses) Gains included in net income related to assets still held 13us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(5)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
(19)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_TradingAccountAssetsMember
Available-for-sale Securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 19,012us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
25,034us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
29,492us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 606us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
302us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(192)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 932us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
1,665us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
1,892us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
359us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
72us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales (2,193)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(4,016)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(119)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (3,337)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(4,642)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(5,109)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 (1,748)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(3,373)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(4,220)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 1,808us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,683us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,218us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 15,080us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
19,012us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
25,034us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Fannie Mae [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 7us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
29us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
946us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
43us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(43)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(24)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 (8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(14)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(895)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
29us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalNationalMortgageAssociationCertificatesAndObligationsFNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Freddie Mac [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 6us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_FederalHomeLoanMortgageCorporationCertificatesAndObligationsFHLMCMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Ginnie Mae [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Total (Losses) or Gains (Realized/Unrealized) included in net income   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Sales   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Issues   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Settlements   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Transfers out of Level 3   (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Transfers Into Level 3   1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Ending Balance   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Net Unrealized (Losses) Gains included in net income related to assets still held   0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_GovernmentNationalMortgageAssociationCertificatesAndObligationsGNMAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Available-for-sale Securities [Member] | Alt-A private-label securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 3,791us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
6,564us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,256us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 172us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
144us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(87)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income (26)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
464us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
584us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales (393)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(2,664)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (471)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,040)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,072)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 (1,738)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(3,357)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(3,325)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 1,805us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,680us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,208us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 3,140us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,791us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
6,564us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesAltAMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Subprime private-label securities [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 7,068us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,447us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,586us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 447us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
120us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(126)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 301us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
1,527us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
1,280us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
359us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales (1,730)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,317)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (846)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,068)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,293)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 5,240us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,068us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,447us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= fnm_MortgageBackedSecuritiesIssuedByPrivateEnterprisesSubprimeMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Mortgage revenue bonds [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 5,253us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,837us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
10,247us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income (32)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
25us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 554us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(449)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(23)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
29us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales (70)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(35)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(76)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (1,682)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(2,125)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(2,349)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 4,023us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
5,253us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
7,837us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USStatesAndPoliticalSubdivisionsMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Available-for-sale Securities [Member] | Other [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 2,885us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,147us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,445us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 103us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
125us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
59us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (336)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(400)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
(369)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Ending Balance 2,671us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
2,885us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,147us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Net Unrealized (Losses) Gains included in net income related to assets still held 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_MortgageBackedSecuritiesOtherMember
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_AvailableforsaleSecuritiesMember
Mortgage Loans [Member] | Consolidated Trusts [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance 2,704us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
2,634us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
2,319us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 260us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
282us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
235us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Purchases 36us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
346us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
935us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(393)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Settlements (344)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(459)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(411)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Transfers out of Level 3 (1,113)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(352)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(562)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Transfers Into Level 3 290us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
646us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
118us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Ending Balance 1,833us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
2,704us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
2,634us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Net Unrealized (Losses) Gains included in net income related to assets still held 53us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
50us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
159us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_MortgageLoansOnRealEstateMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Net derivatives [Member]      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance (40)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
14us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
65us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Total (Losses) or Gains (Realized/Unrealized) included in net income 103us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(165)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(23)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Total (Losses) or Gains (realized/unrealized) included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Issues 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Settlements (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
97us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(20)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Transfers out of Level 3 (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
16us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Transfers Into Level 3 5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Ending Balance 45us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(40)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
14us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Net Unrealized (Losses) Gains included in net income related to assets still held 77us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(51)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
(9)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_DerivativeMember
Long-term Debt [Member]      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance (1,473)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(1,528)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(1,171)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Total (Losses) or Gains (realized/unrealized) included in net income (195)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(174)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(201)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Total (Losses) or Gains included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Issuances (751)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(695)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(523)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Settlements 81us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
580us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
260us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Transfers out of Level 3 1,576us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
434us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
474us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Transfers Into Level 3 (128)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(90)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(367)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Ending Balance (890)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(1,473)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(1,528)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Net unrealized (Losses) Gains included in net income related to Liabilities still held (146)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(4)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
(179)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
Long-term Debt [Member] | Consolidated Trusts [Member]      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance (518)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(1,128)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(765)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Total (Losses) or Gains (realized/unrealized) included in net income (53)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(250)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(180)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Total (Losses) or Gains included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Issuances (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(523)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Settlements 62us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
537us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
233us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Transfers out of Level 3 111us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
434us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
474us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Transfers Into Level 3 (128)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(90)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(367)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Ending Balance (527)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(518)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(1,128)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Net unrealized (Losses) Gains included in net income related to Liabilities still held (49)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(80)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
(158)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_VariableInterestEntityPrimaryBeneficiaryMember
Long-term Debt [Member] | Senior Floating [Member] | Fannie Mae [Member]      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Beginning Balance (955)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(400)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(406)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Total (Losses) or Gains (realized/unrealized) included in net income (142)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
76us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Total (Losses) or Gains included in other comprehensive income 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Issuances (750)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(674)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Settlements 19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
43us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
27us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Transfers out of Level 3 1,465us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Transfers Into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Ending Balance (363)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(955)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
(400)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
Net unrealized (Losses) Gains included in net income related to Liabilities still held $ (97)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
$ 76us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember
$ (21)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ fnm_FairValueItemPrimaryCategorizationAxis
= us-gaap_LongTermDebtMember
/ dei_LegalEntityAxis
= us-gaap_ParentCompanyMember
/ us-gaap_LongtermDebtTypeAxis
= fnm_SeniorFloatingDebtMember