{"id":1469,"date":"2026-01-19T21:27:17","date_gmt":"2026-01-19T13:27:17","guid":{"rendered":"https:\/\/fengshecad.com\/1469\/"},"modified":"2026-02-02T10:20:05","modified_gmt":"2026-02-02T02:20:05","slug":"asme-b16-39-2019-pdf%e4%b8%8b%e8%bd%bd","status":"publish","type":"post","link":"https:\/\/fengshecad.com\/en\/1469\/","title":{"rendered":"ASME B16.39-2019 Practical Q&#038;A: Real-World Questions from Site Engineers and Project Managers"},"content":{"rendered":"<p>This standard covers threaded, malleable iron unions. On paper, it seems straightforward. But in the field, confusion often arises around when to use it versus other union standards, and how to properly apply its pressure-temperature ratings with modern piping materials.<\/p>\n<p>The biggest point of contention is its interaction with other B16 specs and the practical limits of malleable iron. Engineers often treat it as a catch-all for threaded unions, which can lead to specification errors during procurement and installation.<\/p>\n<h2>When do projects actually need to consider B16.39?<\/h2>\n<\/p>\n<p>You need it specifically when you&#8217;re specifying or procuring malleable iron threaded unions. It&#8217;s not for steel unions, bronze unions, or flanged connections. Those are covered by other ASME standards like B16.11 or B16.5.<\/p>\n<p>Think of it as the go-to spec for traditional, low-to-medium pressure utility lines using threaded malleable iron components. Common applications include plant air, cooling water, and low-pressure steam auxiliary lines where threaded connections are preferred for simplicity.<\/p>\n<h2>What&#8217;s the most common mistake made during procurement?<\/h2>\n<\/p>\n<p>The number one mistake is ordering a &#8220;B16.39 union&#8221; without specifying the correct pressure class. This standard includes Class 150, 250, and 300 unions. They are not interchangeable.<\/p>\n<p>Class 150 is the most common for general utility services. Class 250 and 300 are for higher pressure services. If your P&#038;ID just calls for a &#8220;malleable iron union,&#8221; the buyer might default to the cheapest option (Class 150), which could be under-specified for the actual service conditions.<\/p>\n<h2>How do the pressure-temperature ratings work in practice?<\/h2>\n<\/p>\n<p>The ratings are based on the material properties of malleable iron. The published pressure rating decreases as the service temperature increases. This is a classic derating curve you must check.<\/p>\n<p>A huge practical error is assuming the &#8220;300&#8221; in Class 300 means 300 psi at all temperatures. It does not. At elevated temperatures, the allowable pressure can be significantly lower. Always consult the temperature correction tables for your specific service conditions.<\/p>\n<h2>What mistakes do engineers usually make on site?<\/h2>\n<\/p>\n<p>Field crews often over-tighten these unions. The seal is made on the machined faces, not by the threads. Using a cheater bar on a wrench can warp the mating surfaces, leading to leaks. Hand-tight plus a proper wrench turn is all that&#8217;s needed.<\/p>\n<p>Another site error is using them in severe cyclic service. Malleable iron has good strength but limited fatigue resistance compared to steel. For services with frequent pressure or thermal cycles, a B16.11 steel union is often a better choice, even if the pressure rating seems adequate.<\/p>\n<h2>How does this differ from what we usually do with B16.11?<\/h2>\n<\/p>\n<p>B16.11 covers forged steel fittings, including unions. The material difference is the key. Malleable iron (B16.39) is more brittle than forged steel (B16.11). It has lower impact resistance, especially in cold environments.<\/p>\n<p>For critical process lines, refinery service, or any location with potential mechanical impact, steel is the default. B16.39 unions are typically relegated to less critical, utility services within a plant. Mixing them up on an isometric drawing can lead to a material substitution request.<\/p>\n<h2>Can we use B16.39 unions with stainless steel pipe?<\/h2>\n<\/p>\n<p>Technically, you can thread them together. But from a materials engineering standpoint, it&#8217;s a bad practice due to galvanic corrosion. Malleable iron is anodic to stainless steel. In a wet or damp environment, this creates a corrosion cell that will aggressively eat the iron union.<\/p>\n<p>If you must interface threaded malleable iron with stainless, consider using a dielectric union or at least a non-conductive gasket to break the electrical path. The better solution is often to transition to a full stainless steel threaded system using B16.11 fittings.<\/p>\n<h2>What about the seal? Are gaskets or tape allowed?<\/h2>\n<\/p>\n<p>The standard covers metal-to-metal seat unions. They are designed to seal on precision-machined faces without a gasket. Adding a fiber or rubber gasket changes the geometry and can prevent proper face engagement, leading to failure.<\/p>\n<p>Thread sealant (like tape or dope) is only for the threads to prevent leakage along the spiral path. It should not be applied to the sealing faces. Getting sealant on the faces is a common field error that guarantees a leak once the sealant degrades.<\/p>\n<h2>How do inspectors typically check these on site?<\/h2>\n<\/p>\n<p>A good inspector will first verify the marking. A proper B16.39 union will be marked with the manufacturer&#8217;s name or trademark, the pressure class (150, 250, or 300), the size, and the material (usually &#8220;MI&#8221; for malleable iron).<\/p>\n<p>They&#8217;ll then check for proper installation: correct thread engagement, no over-tightening, and alignment. They&#8217;ll also look for signs of improper use, like hammer marks or use in a severely corroded environment where the material isn&#8217;t suitable.<\/p>\n<h2>When is it mandatory versus when is it just a good practice?<\/h2>\n<\/p>\n<p>It&#8217;s mandatory when invoked by your project&#8217;s governing code, like ASME B31.1 for Power Piping or B31.3 for Process Piping, and the design calls for a malleable iron threaded union. The code will direct you to the standard for dimensional and rating requirements.<\/p>\n<p>It&#8217;s a good practice to use it even on smaller, non-code jobs for consistency and to ensure you&#8217;re getting a product that meets recognized dimensional and performance standards. It avoids the &#8220;mystery union&#8221; from an unknown supplier with no traceable ratings.<\/p>\n<h2>What&#8217;s the biggest limitation engineers forget?<\/h2>\n<\/p>\n<p>Temperature limit. Malleable iron&#8217;s properties degrade above 400-450\u00b0F (204-232\u00b0C) for most grades. Even if the derated pressure is acceptable, the material itself may not be suitable for sustained service at high temperatures.<\/p>\n<p>If your process line runs hot, you&#8217;ve likely exceeded the effective scope of B16.39. This is a frequent oversight in retrofit projects where service conditions have changed but the original piping specifications haven&#8217;t been reviewed. Always check the maximum temperature limit for the specific material grade.<\/p>\n\r\n            <div class=\"download-box mg-b\" id=\"download-box\" ref=\"downloadBox\">\r\n            <div>\r\n                \r\n                <div class=\"down-ready\">\r\n                    <div class=\"download-list gujia\" ref=\"gujia\">\r\n                        <div class=\"download-item\">\r\n                            <div class=\"download-thumb\" style=\"'background-image: url();'\">\r\n                            <\/div>\r\n                            <div class=\"download-rights\">\r\n                                <div class=\"download-rights-title\"><span class=\"gujia-bg\"><\/span><\/div>\r\n                                <ul>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                    <li><span class=\"gujia-bg\"><\/span><\/li>\r\n                                <\/ul>\r\n                            <\/div>\r\n                            <div class=\"download-info\">\r\n                            <div class=\"download-rights-title\"><span class=\"gujia-bg\"><\/span><\/div>\r\n                                <ul>\r\n                                <\/ul>\r\n                                <div class=\"download-current\">\r\n                                    <div class=\"\"><\/div>\r\n                                <\/div>\r\n                                <div class=\"download-button-box\">\r\n                                    <div class=\"\"><\/div>\r\n                                    <div class=\"\"><\/div>\r\n                                    <div class=\"\"><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div> \r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"download-list\" v-cloak>\r\n                    <div v-for=\"(item,index) in list\" :class=\"'download-item b2-radius '+(item.current_user.can.allow ? 'allow-down' : 'not-allow-down')\" v-show=\"picked == index\" v-cloak>\r\n                        <div class=\"download-rights\" v-cloak>\r\n                        <div class=\"download-rights-title\"><i class=\"b2font b2-download-cloud-line1\"><\/i>Download permission<\/div><span class=\"mobile-show\" @click=\"item.show_role = !item.show_role\">View<\/span>\r\n                            <ul v-if=\"item.show_role\">\r\n                                <li v-for=\"right in item.rights\" :class=\"right.lv == item.current_user.lv.lv.lv || right.lv == item.current_user.lv.vip.lv ? 'red' : ''\">\r\n                                    <div><span v-text=\"right.lv_name+'\uff1a'\"><\/span><\/div>\r\n                                    <div v-if=\"right.type == 'money'\">\uffe5<span v-text=\"right.value\"><\/span><\/div>\r\n                                    <div v-if=\"right.type == 'credit'\"><i class=\"b2font b2-coin-line\"><\/i><span v-text=\"right.value\"><\/span><\/div>\r\n                                    <div v-if=\"right.type == 'free'\">Download for free<\/div>\r\n                                    <div v-if=\"right.type == 'comment'\">Download after comment<\/div>\r\n                                    <div v-if=\"right.type == 'login'\">Download after login<\/div>\r\n                                    \r\n                                <\/li>\r\n                            <\/ul>\r\n                        <\/div>\r\n                        \r\n                        <div class=\"download-info\">\r\n                        <div class=\"download-rights-title\"><span v-text=\"item.name\"><\/span><a :href=\"item.view\" target=\"_blank\" class=\"download-view button empty text\" v-if=\"item.view\">View demo<i class=\"b2font b2-arrow-right-s-line\"><\/i><\/a><\/div>\r\n                            <ul v-show=\"item.attrs.length >0\">\r\n                                <li v-for=\"attr in item.attrs\">\r\n                                    <span class=\"download-attr-name\">{{attr.name}}\uff1a<\/span>\r\n                                    <span v-html=\"attr.value\"><\/span>\r\n                                <\/li>\r\n                            <\/ul>\r\n                            <div class=\"download-current\">\r\n                                <span>Your current level is<\/span>\r\n                                <span v-if=\"item.current_user.lv.lv\" v-html=\"item.current_user.lv.lv.icon\"><\/span>\r\n                                <span v-if=\"item.current_user.lv.vip\" v-html=\"item.current_user.lv.vip.icon\"><\/span>\r\n                                <div class=\"\" v-if=\"!item.current_user.can.allow\">\r\n                                    <span v-if=\"item.current_user.can.type == 'login'\">\r\n                                    Login for free download<a href=\"javascript:void(0)\" onclick=\"login.show = true;login.loginType = 1\">Login<\/a>\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.lv.lv.lv == 'dark_room'\">\r\n                                    Your account has been temporarily suspended and cannot be operated\uff01\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.can.type == 'comment'\">\r\n                                    Download after comment<a href=\"#respond\">Comment<\/a>\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.lv.lv.lv == 'guest' && !item.current_user.guest\">\r\n                                        <span v-show=\"list[index].rights[0].lv == 'all'\" v-cloak>Download after paying <b><template v-if=\"item.current_user.can.type == 'credit'\"><i class=\"b2font b2-coin-line\"><\/i><\/template><template v-else>\uffe5<\/template><i v-html=\"list[index].current_user.can.value\"><\/i><\/b> points<\/span>\r\n                                        please first<a href=\"javascript:void(0)\" onclick=\"login.show = true;login.loginType = 1\">Login<\/a>\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.can.type == 'full'\" class=\"green\">\r\n                                        You have run out of downloads (<b v-text=\"item.current_user.can.total_count\"><\/b> times) please come back tomorrow  or<a href=\"https:\/\/www.vrgoo.org\/vips\">Upgrade Membership<\/a>\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.can.type == 'credit'\">\r\n                                        Download after paying <b><i class=\"b2font b2-coin-line\"><\/i><i v-html=\"list[index].current_user.can.value\"><\/i><\/b> points<a href=\"javascript:void(0)\" @click=\"credit(index)\">Pay Now<\/a>\r\n                                    <\/span>\r\n                                    <span v-else-if=\"item.current_user.can.type == 'money'\">\r\n                                        Download after paying <b v-text=\"'\uffe5'+list[index].current_user.can.value\"><\/b> points<a href=\"javascript:void(0)\" @click=\"pay(index)\">Pay Now<\/a>\r\n                                    <\/span>\r\n                                    \r\n                                    <span v-else>\r\n                                        Your current user level is not allowed to download<a href=\"https:\/\/fengshecad.com\/en\/vips\/\" target=\"_blank\">Upgrade Membership<\/a>\r\n                                    <\/span>\r\n                                <\/div>\r\n                                <div class=\"\" v-else>\r\n                                    <span v-if=\"item.current_user.current_guest == 0 || item.current_user.can.free_down\" class=\"green\">\r\n                                        You have obtained download permission\r\n                                    <\/span>\r\n                                    <span class=\"green\" v-else>\r\n                                        You can download resources every day<b v-text=\"item.current_user.can.total_count\"><\/b>times, remaining today<b v-text=\"item.current_user.can.count\"><\/b>times left today\r\n                                    <\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div class=\"download-button-box\">\r\n                                <button @click=\"go(b.link,item.current_user.can.allow,item,index)\" class=\"button\" v-text=\"b.name\" v-for=\"b in item.button\"><\/button>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <\/div>\r\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>This standard covers threaded, malleable iron unions. On paper, it seems straightforward. But in the field, confusion often arises around when to use it versus other union standards, and how to properly apply its pressure-temperature ratings with modern piping<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65],"tags":[60],"collection":[],"class_list":["post-1469","post","type-post","status-publish","format-standard","hentry","category-uscodes","tag-asm"],"_links":{"self":[{"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/posts\/1469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/comments?post=1469"}],"version-history":[{"count":2,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/posts\/1469\/revisions"}],"predecessor-version":[{"id":1943,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/posts\/1469\/revisions\/1943"}],"wp:attachment":[{"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/media?parent=1469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/categories?post=1469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/tags?post=1469"},{"taxonomy":"collection","embeddable":true,"href":"https:\/\/fengshecad.com\/en\/wp-json\/wp\/v2\/collection?post=1469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}